采用什么办法可以使得发送包的时候从那个接口进来就从那个接口出去
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=220.231.180.153
NETMASK=255.255.255.128
GATEWAY=220.231.180.129
DEVICE=eth0:1
ONBOOT=yes
BOOTPROTO=static
IPADDR=220.112.40.153
NETMASK=255.255.255.128
GATEWAY=220.112.40.129
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
61.141.228.31 * 255.255.255.255 UH 0 0 0 eth0
220.112.40.128 * 255.255.255.128 U 0 0 0 eth0
220.231.180.128 * 255.255.255.128 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 220.231.180.129 0.0.0.0 UG 0 0 0 eth0
现在tcp 连接220.231.180.153,客户端看到服务器回来的ip是220.231.180.153;
tcp 连接220.112.40.153,客户端看到服务器回来的ip是220.112.40.153;
但是udp连接220.231.180.153,220.112.40.153,客户端看到服务器回来的ip都是220.231.180.153,现在希望和tcp一样能够识别来源,我该在哪一层做点什么,iptables,route?
[ 本帖最后由 g0ose 于 2006-10-20 17:35 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我想是我没有描述清楚,现在再详细描述一下情况和我的分析.
目前采用的业务是双线合一,isp提供智能路由.所以电信访问电信的ip,和网通访问网通的都很快,我没有必要做策略路由.就算做的话,精确度达不到要求.而且采用tcp的协议不会有问题.
但是如果是udp协议,那么如果我发给220.112.40.153的包,服务器在填写自己ip的时候,就默认填写了220.231.180.153的地址,因为它和默认网关是同一个网段的.[tcp就能够识别来源,并绑定正确的接口地址]现在问题就来了,这个包也会到达我的adsl上,如果这个adsl采用的是对称nat的话,那么这个包就会被adsl抛弃!,所以我只希望从eth0:1进去的包,回来的时候也填写eth0:1的ip地址(220.112.40.153).请问这种需求用iptables的snat可以做到吗?我对iptables的了解还不够.
iptables -t nat -A POSTROUTING -p udp -i eth0:1 --dport 1111 -j SNAT --to-source 220.112.40.153,这种写法是有问题的.
二楼已经说了的。
不信的话多翻老贴
网络层上做策略路由