Chinaunix首页 | 论坛 | 博客
  • 博客访问: 54908
  • 博文数量: 24
  • 博客积分: 975
  • 博客等级: 准尉
  • 技术积分: 250
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-18 21:58
文章分类

全部博文(24)

文章存档

2011年(1)

2005年(23)

我的朋友
最近访客

分类: LINUX

2005-09-22 20:54:54

电信、网通双线自切

同段ip切换速度会自己向下掉啊掉~保持不住,不稳定


                Internet
                  |     |
                  |     |
                电信 网通
                  |     |
                     |
                 交换机
                    |
              eth1  eth2
                 Server
                   eth0
                      |
           _____________
       客户机  客户机  客户机  客户机192.168.0.0/24 网关192.168.0.254


其中eth0 ip 192.168.0.0/24
     eth1 222.168.1.3/255.255.255.252
     eth2 218.62.3.3/255.255.255.252
     默认网关为网通的218.62.3.2
     加上ip route add的电信网关 222.168.1.2

部分脚本为
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -d $电信ip -j SNAT --to 222.168.1.3
***
***
***
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 218.62.3.3

这样呢就实现了一个网段的电信网通自动切换

前期测试:如果单独切换ip,内网同时并存192.168.0.254/24 192.168.2.254/24两个网关,速度很稳定,可以实现预期效果

现在我有这么一个想法,如下:
加入 eth0:1,ip为192.168.2.254/24
ip rule 192.168.2.254,配合着上边电信的路由~

下边的客户机依然用192.168.0.254做默认网关

当客户机访问电信ip段时,能否自动通过192.168.0.254这个网关转到192.168.2.254这个网关,以实现最佳的预期效果呢?

route add -net 192.168.0.0 netmask 255.255.255.0 dev 192.168.2.254

代码:

# echo "200    DIANXIN" >> /etc/iproute2/rt_table
# ip route add default via 222.168.1.2 table DIANXIN
# iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d $电信IP -j MARK --set-mark 1
# ip rule add fwmark 1 table DIANXIN
# ip route flush cache
# iptables -t nat -F
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE


参考文档:


你只顾伪装源地址,忘记了修改路由
我正好相反,只顾修改路由跳转,忘了正确伪装源地址

# echo "200    DIANXIN" >> /etc/iproute2/rt_table
# ip route replace default via 222.168.1.2 table DIANXIN
# iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d $电信IP -j MARK --set-mark 1
# ip rule add fwmark 1 table DIANXIN
# ip route flush cache
# iptables -t nat -F
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d $电信地址-j SNAT --to $电信网卡的WAN地址
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to $网通网卡的WAN地址

这样试试

# echo "200    DIANXIN" >> /etc/iproute2/rt_table
# ip route replace default via 222.168.1.2 table DIANXIN
# iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d $电信IP -j MARK --set-mark 1
# ip rule add fwmark 1 table DIANXIN
# ip route flush cache
# iptables -t nat -F
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d $电信地址-j SNAT --to $电信网卡的WAN地址
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to $网通网卡的WAN地址

哈哈哈哈

一切終於正常了

額且最有意思的就是與順序有關

得先

iptables -t mangle -I PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.222.5.0/15 -j MARK --set-mark 1
iptables -t mangle -I PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.240.0.0/13 -j MARK --set-mark 1

再這個

iptables -t nat -I POSTROUTING -s $PRIVATE -d 222.222.5.0/15 -j SNAT --to $DIANXIN
iptables -t nat -I POSTROUTING -s $PRIVATE -d 222.240.0.0/13 -j SNAT --to $DIANXIN

然後規則用

# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to $网通网卡的WAN地址

一切OK

如果點到了SNAT,呵呵.默認的網通就成電信了

有待捉摸

这也就是我为什么
iptables -t nat -F
的原因了

我没写mangle表,你也可以加一个
iptables -t mangle -F
然后把-I换成-A就可以了

我总结一下,正确的是

代码:

# echo "200    DIANXIN" >> /etc/iproute2/rt_table(这个是添加到文件,执行一次即可)
# ip route replace default via 222.168.1.2 table DIANXIN
# ip rule add fwmark 1 table DIANXIN(这个注意顺序,用ip rule可以查看)
# iptables -t nat -F
# iptables -t mangle -F
# iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.222.5.0/15 -j MARK --set-mark 1
# iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.240.0.0/13 -j MARK --set-mark 1
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 222.222.5.0/15 -j SNAT --to $DIANXIN
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 222.240.0.0/13 -j SNAT --to $DIANXIN
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to $接网通线路网卡的地址
# ip route flush cache


这样的结果,是访问222.222.5.0/15和222.240.0.0/13走电信网卡、电信路由,伪装成电信出口地址,其他默认网通

参考文档:


-A是append,是追加
-I是insert,是插入,默认插入到第一条

# echo "200    DIANXIN" >> /etc/iproute2/rt_tables(这个是添加到文件,执行一次即可)
# ip route replace default via 222.168.1.2 table DIANXIN(replace用来替换默认路由,而不是添加)
# ip rule add fwmark 1 table DIANXIN(这个注意顺序,用ip rule可以查看)
# iptables -t nat -F
# iptables -t mangle -F
# iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.222.5.0/15 -j MARK --set-mark 1
# iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.240.0.0/13 -j MARK --set-mark 1
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 222.222.5.0/15 -j SNAT --to $DIANXIN
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 222.240.0.0/13 -j SNAT --to $DIANXIN
# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to $接网通线路网卡的地址
# ip route flush cache

这样的结果,是访问222.222.5.0/15和222.240.0.0/13走电信网卡、电信路由,伪装成电信出口地址,其他默认网通




阅读(1027) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~