免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3881 | 回复: 1
打印 上一主题 下一主题

linux双网卡做过NAT后的路由原路返回问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-18 11:45 |只看该作者 |倒序浏览
网络拓扑结构图:

  |   Internet     |
   |                  |
-------            --------
wan1|           wan2|
|Linux 主机,实现路由功能, 2个公网IP,不同ISP|
----------------------------------------------
        | Lan|
                |
                |
--------------------
内网,某些主机需要提供服务,外网可以访问
--------------------

由于需要把内网的服务提供给外网访问,因此,在linux路由主机上做了NAT,并对两个wan口做了策略路由。
现在的问题是:
当某个外网访问数据通过DNAT到达内网后,内网返回的数据包,有可能从另外的网卡发回数据包(不是从接收它的网卡),这样导致从这个ISP进入的包,应答发到了另外的ISP,导致包丢失。
(注:如果把服务直接放在linux路由主机上,已经不会发生前面的问题,只要经过NAT后,则发生以上现象,2个网卡中,总有一个外网卡不能正常,一个是正常的)

请问各位大侠,这个问题如何解决?

论坛徽章:
0
2 [报告]
发表于 2007-04-19 22:29 |只看该作者
用Iproute用策略路由撒.

Debian
aptitude install iproute
vi /etc/iproute2/rt_tables
添加:
50      chinacom
100     spat
120     downhole
200     dmz

保存退出。
eth0:10.10.10.10/24  总公司网络
eth1:172.16.1.1/24  DMZ
eth2:222.220.2.45/24 电信
eth3:172.18.1.1/30  内网路由


nat:~# more add_route.sh
#!/bin/bash
####### give default route to tables ######

ip route add 0/0 via 222.220.2.1 table 50
ip route add 0/0 via 10.10.10.1 table 100
ip route add 0/0 via 172.18.1.2 table 120
ip route add 0/0 via 172.16.1.1 table 200

############### add rules #################
ip rule add from all to 222.220.2.0/24 pref 500 table 50 (到电信路由)
ip rule add to 192.168.0.0/16 pref 600 table 120          (到内网路由)
ip rule add to 10.0.0.0/8 pref 700 table 100                  (公司总部)
ip rule add to 172.16.1.0/24 pref 800 table 200            (到DMZ的路由)
ip rule add from 192.168.0.0/24 pref 900 table 100      (内网出去的默认路由)
ip rule add from 172.16.1.0/24 pref 1000 table 100      (来自DMZ的路由)

ip rule add from 192.168.248.19 pref 10050 table 50    (这个内网的走电信,后面好映射到电信外网)
ip rule add from 172.16.1.3 pref 10060 table 50            (这个DMZ的也走电信,后面好映射到电信外网)

nat:~# more nat.sh
#!/bin/sh
echo "1" > /proc/sys/net/ipv4/ip_forward
route add -net 192.168.0.0/16 gw 172.18.1.2
route add -net 222.220.2.0/24 gw 222.220.2.1
route add default gw 10.10.10.1   (默认路由都走总公司出去)

##### SNAT ########
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth0 -j SNAT --to 10.10.10.10
iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth2 -j SNAT --to 222.220.2.45
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 10.90.30.2
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to 10.10.10.10
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth2 -j SNAT --to-source 222.220.2.45

###### DNAT ########
iptables -t nat -A PREROUTING -d 10.10.10.13 -j DNAT --to 172.16.1.3   (DMZ映射到公司网络)
iptables -t nat -A PREROUTING -i eth2 -d 222.220.2.45 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.3:80

iptables -t nat -A PREROUTING -d 222.220.2.45 -i eth2 -p tcp -m tcp --dport 22 -j DNAT --to-destination 192.168.248.19:22


这样可以通过电信公网:222.220.2.45 SSH到内网的:192.168.248.19这个机子上了。
也能通过电信IP:222.220.2.45 访问到DMZ里的172.16.1.3的80了。

这个有部分是改过的,特别是IP。如有错误请纠正。

[ 本帖最后由 sulin515 于 2007-4-19 23:03 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP