關注和試用LINUX很長時間了,但較少實際用起來,剛好單位需一個路由器,有閒置老機,提升下自己實戰能力吧!網上文章好多筆誤,因此有些小波折,希望把這次經歷總結下,為了忘卻的紀念。
安裝好UBUNTU SERVER 8.04後,設置雙網卡:eth0為外網網卡,eth1為內網網卡,
sudo vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 外網網卡IP
netmask 子網掩碼
gateway 網關
auto eth1
iface eth1 inet static
address 內網網卡IP
netmask 子網掩碼
sudo /etc/init.d/networking restart
還有設置DNS服務器
sudo vi /etc/resolv.conf(實際系統默認的並不存在resolv.conf該文件,屬於自己創建)
nameserver 主DNS
nameserver 後備DNS
要想使LINUX系統達到這種目的,首先得查看LINUX系統的內核中是否打開了IP轉發功能,可以通過下列命令來查看:
sudo cat /proc/sys/net/ipv4/ip_forward
如果用此命令返回的結果是0,那麼就表明LINUX內核沒有啟用IP轉發功能。就可以通過下示命令來啟用:
sudo echo 1 > /proc/sys/net//ipv4/ip_forward
通過固定公網IP地址方式連接互聯的實現方法如下:
sudo iptables –t nat –A POSTROUTING –s 192.168.1.0/24 -j SNAT ––to XXX.XXX.XXX.XXX
XXX是外網網卡IP,我的路由還沒做防護,先隱藏了,對IPTABLES還不熟悉,呵呵。
用後發現還不能上網,一番檢查,還不行,暴汗……猛然想起可能是ISP對上網網卡的MAC地址綁定了,我改……
其實就是在網卡配置文件中加一行pre-up ifconfig eth0 hw ether 88:88:88:88:88:88(MAC地址)
sudo vi /etc/network/interfaces
auto eth0
iface eth0 inet static
pre-up ifconfig eth0 hw ether 88:88:88:88:88:88
address 外網網卡IP
netmask 子網掩碼
gateway 網關
auto eth1
iface eth1 inet static
address 內網網卡IP
netmask 子網掩碼
sudo /etc/init.d/networking restart
能PING能了,網卡配置能保存,把NAT和QOS做成一腳本,設置主屬為ROOT,否則運行無權限,開機時運行。
#!/bin/sh
# BY ZWY 090916
# Coyote local command init script
echo "1" >/proc/sys/net/ipv4/ip_forward
#打開內核IP轉發功能
iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -j SNAT --to XXX.XXX.XXX.XXX
#設置IP轉發規則,但沒有做任何防護:裸奔!呵呵。
ODEV="eth0" #外網網卡
IDEV="eth1" #內網網卡
UP="64kbps" #上行總帶寬:注意單位其實應該是KB/S,TC寫法如此沒辦法,如下同單位。
DOWN="256kbps" #下行總帶寬
UPLOADrate="4kbps" #限速范圍IP上行保證帶寬
UPLOADceil="32kbps" #限速范圍IP上行最大帶寬
DOWNLOADrate="16kbps" #限速范圍IP下行保證帶寬
DOWNLOADceil="128kbps" #限速范圍IP下行最大帶寬
INET="192.168.1." #限速網段
IPS="100" #限速范圍起始IP
IPE="110" #限速范圍結束IP
outdown="4kbps" #不在限速范圍IP共享(總)下行速度
outup="1kbps" #不在限速范圍IP共享(總)上行速度
tc qdisc del dev $ODEV root 2>/dev/null #清除隊列規則(初始化)
tc qdisc del dev $IDEV root 12下一頁