我的问题和标题一样简单,我在一个界面中有一个debian 6,2个NIC,3个不同的子网,就像这样:
auto eth0 iface eth0 inet static address 192.168.106.254 netmask 255.255.255.0 auto eth0:0 iface eth0:0 inet static address 172.19.221.81 netmask 255.255.255.248 auto eth0:1 iface eth0:1 inet static address 192.168.254.1 netmask 255.255.255.248 auto eth1 iface eth1 inet static address 172.19.216.3 netmask 255.255.255.0 gateway 172.19.216.13
eth0
与3个不同的vlan连接, eth1
到路由器。 没有iptables DROP,所以所有的stream量都是允许的。 现在,通过eth0
传递stream量是好的,通过eth0
传递stream量eth0:0
是好的,但是,通过eth0:1
传递stream量不起作用,我可以ping该子接口的IP地址,默认网关,但无法到达eth1
接口的子网中的服务器,即使当我设置iptablesloggingFORWARD
链中的所有stream量,并且我可以看到在那里的stream量时,stream量不会通过,但是,交通并不真正stream逝。 而有趣的是我可以做任何其他的方式,我的意思是,从eth1
传递给eth0:1
,RDP,telnet,ping等,
使用iptable做一些工作,我设法从eth0:1
传递一些stream量到eth1
,iptables看起来像这样:
iptables -t nat PREROUTING -d 192.168.254.1/32 -p tcp -m multiport --dports 25,110,5269 -j DNAT --to-destination 172.19.216.1 iptables -t nat PREROUTING -d 192.168.254.1/32 -p udp -m udp --dport 53 -j DNAT --to-destination 172.19.216.9 iptables -t nat PREROUTING -d 192.168.254.1/32 -p tcp -m tcp --dport 21 -j DNAT --to-destination 172.19.216.11 iptables -t nat POSTROUTING -s 172.19.216.0/24 -d 172.19.221.80/29 -j SNAT --to-source 172.19.221.81 iptables -t nat POSTROUTING -s 172.19.216.0/24 -d 192.168.254.0/29 -j SNAT --to-source 192.168.254.1 iptables -t nat POSTROUTING -s 172.19.216.0/24 -o eth0 -j SNAT --to-source 192.168.106.254
但是,真的很头痛,不得不把每个端口映射到服务器上,想象一下,如果我把服务从服务器上移开,那么现在我就怀疑了:
可以通过多个子接口的debian路由? 存在这个限制? 如果没有,当我有与其他子网相同的设置,它正在工作好吗? 在nat中没有iptables规则,这是行不通的
谢谢,我希望好评/答案
路线172.19.216.3
root@dbf1:~# ip route 192.168.254.0/29 dev eth0 proto kernel scope link src 192.168.254.1 172.19.221.80/29 dev eth0 proto kernel scope link src 172.19.221.81 172.19.216.0/24 dev eth1 proto kernel scope link src 172.19.216.3 192.168.106.0/24 dev eth0 proto kernel scope link src 192.168.106.254 default via 172.19.216.13 dev eth1
当一台机器想发送一个数据包到一个没有路由的目的地时,它会把它转发到它的默认网关。 您试图访问的机器正在使用它们生成的回复数据包执行此操作。 如果他们正在使用的默认网关机器不知道如何到达这台机器,那么它会出现,如果这台机器没有正确发送stream量。 但它是。 问题是在回复没有回来。
这是序列:
这台机器将数据包发送到正确的机器。
目标机器获取数据包并形成响应。 响应的IP目的地是它收到的数据包的来源。
目标机器没有路由到这个数据包的目的地,因为它不在本地子网上。 所以它转发到它的默认网关路由器。
该路由器不知道如何到达目的地,因为它不在其子网上。 所以它通过它的默认网关发送,可能是因特网。
为了使networking正常工作,任何机器的默认网关设备都必须知道如何访问其客户端可能希望到达的每个本地子网,或者每个客户端都必须有自己的方法才能访问该子网。