linux雙網策略路由指令碼例項
雙網要比單網複雜的多。
首先安裝linux高階路由包,用裡面的ip命令。
# apt-get install iproute
先建立兩個表
修改/etc/iproute2/rt_tables如下
加t1自定義編號10
加t2自定義編號20
**:######################################## #
# reserved values #
255 local
254 main
253 default
0 unspec #
# local #
10 t1
20 t2
########################################
然後將附件裡的cnc_1_net和ctc_1_net拷貝到/etc目錄下,因為下面的指令碼要用到。
cnc_1_net是網通的ip段
ctc_1_net是電信的ip段
我們要編輯個指令碼。
########################################
#!/bin/sh
# if1 是網通的網路介面
if1="eth0"
# if2 是內網的網路介面
if2="eth2"
# if0 是電信的網路介面
if0="eth1"
# ip1 是網通的ip
ip1="221.8.60.54"
# ip2 是電信的ip
ip2="222.168.11.186"
# p1 是網通的閘道器
p1="221.8.60.53"
# p2 是電信的閘道器
p2="222.168.11.185"
# p1_net 是網通的網段, 掩碼30表示有分派了4個ip, 如果是8個ip就要寫成29了。
p1_net="221.8.60.52/30"
# p2_net 為電信的網段
p2_net="222.168.11.184/30"
# p0_net 為內網網段
p0_net="192.168.0.0/24"
# 設定基本的防火牆
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 8000 > /proc/sys/net/ipv4/ip_conntrack_max
modprobe iptable_filter
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_nat_irc
modprobe ip_conntrack_irc
modprobe ipt_masquerade
modprobe ipt_reject
modprobe ipt_limit
iptables -f
iptables -t nat -f
iptables -p input drop
iptables -p forward accept
iptables -p output accept
iptables -a input -m state --state established,related -j accept
iptables -a input -p tcp --dport 22 -m state --state new -j accept
iptables -a input -i lo -j accept
iptables -a forward -p tcp --tcp-flags syn,rst syn -j tcpmss --clamp-mss-to-pmtu
iptables -a input -p icmp --icmp-type echo-request -m limit --limit 1/s -j accept
iptables -t nat -a postrouting -s $p0_net -o $if1 -j masquerade
iptables -t nat -a postrouting -s $p0_net -o $if2 -j masquerade
# 設定策略路由
ip route flush table t1
ip route flush table t2
ip rule list | grep t | while read line; do
pos4=`echo $line | awk /'/'`
if [ "$pos4" = "to" ]
then
dst=`echo $line | awk /'/'`
rt=`echo $line | awk /'/'`
ip rule del to $dst table $rt
fiif [ "$pos4" = "lookup" ]
then
src=`echo $line | awk /'/'`
rt=`echo $line | awk /'/'`
ip rule del from $src table $rt
fidone
if [ ! -z $ip1 ]
then
ip route replace $p1_net dev $if1 src $ip1
ip route add $p1_net dev $if1 src $ip1 table t1
ip route add $p0_net dev $if0 table t1
ip route add 127.0.0.0/8 dev lo table t1
ip route add $p1_net dev $if1 table t2
ip route replace default via $p1 dev $if1 table t1
ip rule add from $ip1 table t1
wan_rt1="nexthop via $p1 dev $if1 weight 1"
fiif [ ! -z $ip2 ]
then
ip route replace $p2_net dev $if2 src $ip2
ip route add $p2_net dev $if2 src $ip2 table t2
ip route add $p0_net dev $if0 table t2
ip route add 127.0.0.0/8 dev lo table t2
ip route add $p2_net dev $if2 table t1
ip route replace default via $p2 dev $if2 table t2
ip rule add from $ip2 table t2
wan_rt2="nexthop via $p2 dev $if2 weight 1"
fiwan_rt3="$wan_rt1 $wan_rt2"
# 把網通作為預設閘道器,如果是電信把$wan_rt1修改為$wan_rt2
ip route replace default scope global $wan_rt1
# 用兩個閘道器做負載均衡(一般不用)
#ip route replace default equalize scope global $wan_rt3
ip route flush cache
if [ -s /etc/ctc_1_net ]
then
while read line
docase $line in
//#*) ;;
*)ip rule add to $line table t2
;;esac
done < /etc/ctc_1_net
fiif [ -s /etc/cnc_1_net ]
then
while read line
docase $line in
//#*) ;;
*)ip rule add to $line table t1
;;esac
done < /etc/cnc_1_net
fiip route flush cache
本文出自 51cto.com技術部落格
策略路由例項
如上圖網路拓撲所示,將建立兩條不同的路徑使其接入網路,下面將使用ip命令在三層交換機中建立起兩條路徑,路由來自不同網路的資料報。在三層交換機中建立兩條wan連線,分別標識為wan1 wan2。wan1使用的虛擬網路介面eth0.3,配以靜態ip位址172.16.100.254,經過閘道器172.16...
Linux 路由 策略路由
目錄二 ip策略 刪除ip策略規則 三 永久生效,寫入配置檔案 etc sysconfig network scripts rule ethx 注意 本文中使用 隔開的命令等價 從linux 2.2開始,核心把路由歸納到許多路由表中,這些表都進行了編號,編號數字的範圍是1到255。可以在路由表配置檔...
Linux策略路由
前面講的路由規則都是基於目標ip位址為匹配依據設定的路由規則,策略路由則更加靈活,它可以根據多個引數來配置路由。假設如下的使用場景 在192.168.10.0子網中,除了主機192.168.10.123要訪問網際網路時是通過電信運營商 192.168.20.0 24 之外,其他主機都使用移動運營商 ...