免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-18 11:45 |只看该作者 |倒序浏览
网络拓扑结构图:\r\n\r\n  |   Internet     |\r\n   |                  |\r\n-------            --------\r\nwan1|           wan2|\r\n|Linux 主机,实现路由功能, 2个公网IP,不同ISP|\r\n----------------------------------------------\r\n        | Lan|\r\n                |\r\n                |\r\n--------------------\r\n内网,某些主机需要提供服务,外网可以访问\r\n--------------------\r\n\r\n由于需要把内网的服务提供给外网访问,因此,在linux路由主机上做了NAT,并对两个wan口做了策略路由。\r\n现在的问题是:\r\n当某个外网访问数据通过DNAT到达内网后,内网返回的数据包,有可能从另外的网卡发回数据包(不是从接收它的网卡),这样导致从这个ISP进入的包,应答发到了另外的ISP,导致包丢失。\r\n(注:如果把服务直接放在linux路由主机上,已经不会发生前面的问题,只要经过NAT后,则发生以上现象,2个网卡中,总有一个外网卡不能正常,一个是正常的)\r\n\r\n请问各位大侠,这个问题如何解决?

论坛徽章:
0
2 [报告]
发表于 2007-04-19 22:29 |只看该作者
用Iproute用策略路由撒.\r\n\r\nDebian\r\naptitude install iproute\r\nvi /etc/iproute2/rt_tables\r\n添加:\r\n50      chinacom\r\n100     spat\r\n120     downhole\r\n200     dmz\r\n\r\n保存退出。\r\neth0:10.10.10.10/24  总公司网络\r\neth1:172.16.1.1/24  DMZ\r\neth2:222.220.2.45/24 电信\r\neth3:172.18.1.1/30  内网路由\r\n\r\n\r\nnat:~# more add_route.sh\r\n#!/bin/bash\r\n####### give default route to tables ######\r\n\r\nip route add 0/0 via 222.220.2.1 table 50\r\nip route add 0/0 via 10.10.10.1 table 100\r\nip route add 0/0 via 172.18.1.2 table 120\r\nip route add 0/0 via 172.16.1.1 table 200\r\n\r\n############### add rules #################\r\nip rule add from all to 222.220.2.0/24 pref 500 table 50 (到电信路由)\r\nip rule add to 192.168.0.0/16 pref 600 table 120          (到内网路由)\r\nip rule add to 10.0.0.0/8 pref 700 table 100                  (公司总部)\r\nip rule add to 172.16.1.0/24 pref 800 table 200            (到DMZ的路由)\r\nip rule add from 192.168.0.0/24 pref 900 table 100      (内网出去的默认路由)\r\nip rule add from 172.16.1.0/24 pref 1000 table 100      (来自DMZ的路由)\r\n\r\nip rule add from 192.168.248.19 pref 10050 table 50    (这个内网的走电信,后面好映射到电信外网)\r\nip rule add from 172.16.1.3 pref 10060 table 50            (这个DMZ的也走电信,后面好映射到电信外网)\r\n\r\nnat:~# more nat.sh\r\n#!/bin/sh\r\necho \"1\" > /proc/sys/net/ipv4/ip_forward\r\nroute add -net 192.168.0.0/16 gw 172.18.1.2\r\nroute add -net 222.220.2.0/24 gw 222.220.2.1\r\nroute add default gw 10.10.10.1   (默认路由都走总公司出去)\r\n\r\n##### SNAT ########\r\niptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth0 -j SNAT --to 10.10.10.10\r\niptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth2 -j SNAT --to 222.220.2.45\r\niptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 10.90.30.2\r\niptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to 10.10.10.10\r\niptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth2 -j SNAT --to-source 222.220.2.45\r\n\r\n###### DNAT ########\r\niptables -t nat -A PREROUTING -d 10.10.10.13 -j DNAT --to 172.16.1.3   (DMZ映射到公司网络)\r\niptables -t nat -A PREROUTING -i eth2 -d 222.220.2.45 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.3:80\r\n\r\niptables -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\r\n\r\n\r\n这样可以通过电信公网:222.220.2.45 SSH到内网的:192.168.248.19这个机子上了。\r\n也能通过电信IP:222.220.2.45 访问到DMZ里的172.16.1.3的80了。\r\n\r\n这个有部分是改过的,特别是IP。如有错误请纠正。\n\n[ 本帖最后由 sulin515 于 2007-4-19 23:03 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP