轉 http://www.csjh.tcc.edu.tw/phpbbinf/viewtopic.php?p=8856&sid=1f7ed91e575cf5d388e5223a481aefac
中港高中Multipath作法
曾榮民
台中縣立中港高級中學
2003/03/11
Eamil:kwang@mail.cgjh.tcc.edu.tw
Home:http://www.cgjh.tcc.edu.tw/tkwang/
一、網路設定
eth0----Tanet
111.111.111.111/255.255.255.0
GW:111.111.111.254
eth1----內部網路
192.168.2.254/255.255.255.0
eth2----Hinet
222.222.222.222/255.255.255.0
GW:222.222.222.254
二、作業系統
Redhat7.3
三、須要安裝的軟體套件
1.webmin(Server一般設定管理:須下載安裝)
2.pwebstats(squid的log檔分析管理:須下載安裝)
3.Mrtg(即時流量分析:Readhat7.3內含)
4.Iptraf(網路監看:Readhat7.3內含)
5.iptables(網路管理:Readhat7.3內含)
6.iproute2(路由設定,multipath:Readhat7.3內含)
四、網路設定檔
/etc/sysconfig/network-scripts/ifcfg-eth0
##start
DEVICE=eth0
BOOTPROTO=static
BROADCAST=111.111.111.255
IPADDR=111.111.111.111
NETMASK=255.255.255.0
NETWORK=111.111.111.0
ONBOOT=yes
##End of file
/etc/sysconfig/network-scripts/ifcfg-eth1
##start
DEVICE=eth1
BOOTPROTO=static
BROADCAST=192.168.2.255
IPADDR=192.168.2.254
NETMASK=255.255.255.0
NETWORK=192.168.2.0
ONBOOT=yes
##End of file
/etc/sysconfig/network-scripts/ifcfg-eth2
##start
DEVICE=eth2
BOOTPROTO=static
BROADCAST=222.222.222.255
IPADDR=222.222.222.222
NETMASK=255.255.255.0
NETWORK=222.222.222.0
ONBOOT=yes
##End of file
/etc/iproute2/rt_tables
##start#
# reserved values
#
#255 local
#254 main
#253 default
#0 unspec
#
# local
#
#1 inr.ruhep
20 t1
30 t2
##End of file
五、multipaht及nat的設定
##nat.sh--start
#!/bin/sh
# ------------- ensure iptables ----------
modprobe ip_tables
# ------------- modules -----------
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
# ------------- ipforwarding -----------
echo "Turning on IP forwarding..."
echo "1" > /proc/sys/net/ipv4/ip_forward
# ------------- flushing ----------
echo "Cleaning up..."
iptables -F -t filter
iptables -X -t filter
iptables -Z -t filter
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
# ------------- policies -------------
echo "Setting up policies to ACCEPT..."
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
# ------------- masq -------------
echo "Masq..."
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j MASQUERADE
############## multipath start #############################
/sbin/ip rule add pref 20 from 111.111.111.111 table t1 dev eth0
/sbin/ip route add default table t1 via 111.111.111.254 dev eth0
/sbin/ip rule add pref 20 from 222.222.222.222 table t2 dev eth2
/sbin/ip route add default table t2 via 222.222.222.254 dev eth2
/sbin/ip rule list
/sbin/ip route list table t1
/sbin/ip route list table t2
##靜態路由(指定該網段要由111.111.111.254這個路由出去)
/sbin/ip route add 163.17.40.0/24 via 111.111.111.254 dev eth0
除了路由表有設定的之外其餘的預設走下面這個介面
/sbin/ip route replace default via 222.222.222.254 dev eth2
##如果要自動在兩個線路中自動切換上面這一行改成下面的設定,
##其中weight的值是多少的比例分配到那條線路中
##/sbin/ip route replace default nexthop via 111.111.111.254 dev /
eth0 weight 1 nexthop via 222.222.222.254 dev eth2 weight 1
##如果你要強迫內部某一IP一定要走特定的路由可以如下設定
##強迫192.168.2.214這個ip一定要走table t1的路由設定,
##也就是說如果要對外連線192.168.2.214這個ip一定會走111.111.111.254
ip rule add from 192.168.2.214 table t1
/sbin/ip route flush cache
##End of File
六、參考資料
iptables
http://alge.anart.no/projects/free_books/
iproute2
http://www.mh-hannover.de/student/software/linux-howtos-pdf/Adv-Routing-HOWTO.pdf
Linux ADSL Multipath Routing Solution
http://www.study-area.org/tips/multipath.txt
架設 NAT
http://www.study-area.org/linux/servers/linux_nat.htm
今天早上重新將iproute2這個工具的用法重新看了一下發現如果只是要作到
163.17.40.0/24跑tanet,其它的跑Hinet只要如此作即可
############## multipath start ############################
/sbin/ip route add 163.17.40.0/24 via 111.111.111.254 dev eth0
/sbin/ip route replace default via 222.222.222.254 dev eth2
/sbin/ip route flush cache
不過如果自訂routing table 可以玩更高難度的routing設定