linux策略路由配置实例,linux策略路由实例

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 \'{print $4}\'`

if [ "$POS4" = "to" ]

then

DST=`echo $line | awk \'{print $5}\'`

RT=`echo $line | awk \'{print $7}\'`

ip rule del to $DST table $RT

fi

if [ "$POS4" = "lookup" ]

then

SRC=`echo $line | awk \'{print $3}\'`

RT=`echo $line | awk \'{print $5}\'`

ip rule del from $SRC table $RT

fi

done

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"

fi

if [ ! -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"

fi

WAN_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

do

case $LINE in

\\#*) ;;

*)

ip rule add to $LINE table T2

;;

esac

done < /etc/ctc_1_net

fi

if [ -s /etc/cnc_1_net ]

then

while read LINE

do

case $LINE in

\\#*) ;;

*)

ip rule add to $LINE table T1

;;

esac

done < /etc/cnc_1_net

fi

ip route flush cache

你可能感兴趣的:(linux策略路由配置实例)