linux策略路由例項

2021-04-25 06:52:14 字數 4239 閱讀 8696

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 之外,其他主機都使用移動運營商 ...