linux策略路由实例
linux双网策略路由脚本实例 双网要比单网复杂的多。 本文出自 51CTO.COM技术博客首先安装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 |


sunyuchun
博客统计信息
热门文章
最新评论
友情链接