我正在创build一个testing环境。 其中我有一个生产networking,孤立的networking和Linux机器。 在具有2个NIC的Linux机器中,一个NIC连接到生产networking环境,然后分配一个IP,另一个是隔离networking。
PROD-------(eth0)[LINUXMACHINE](eth1)-----ISOALTED NETWORK
在上面的表示中,configuration一个网卡(eth0)之后,我可以从生产networking机器ping到Linux机器。 然后我将eth1configuration成隔离networking的默认网关。 启用eth1之后,可以从Linux机器ping到隔离的env。 现在我无法从Prod到Linux机器ping。如果我禁用eth1的手段,它将工作,否则它不会。
我是networking新手。 我不知道问题到底在哪里,我做错了什么。 我已经启用了以下
IP转发,MASQUERADE和一些iptables规则
任何人都可以build议我一个很好的方法来完成这项工作。
提前致谢
编辑
使用ifconfig
eth0 Link encap:Ethernet HWaddr 00:50:56:8f:68:e7 inet addr:192.168.108.13 Bcast:192.168.108.255 Mask:255.255.255.0 inet6 addr: fe80::250:56ff:fe8f:68e7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:335609 errors:0 dropped:3107 overruns:0 frame:0 TX packets:48332 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:131610506 (131.6 MB) TX bytes:4424737 (4.4 MB) eth1 Link encap:Ethernet HWaddr 00:50:56:8f:0a:c6 inet addr:192.168.103.1 Bcast:192.168.103.255 Mask:255.255.255.0 inet6 addr: fe80::250:56ff:fe8f:ac6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:18773 errors:0 dropped:0 overruns:0 frame:0 TX packets:35645 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1816084 (1.8 MB) TX bytes:50940327 (50.9 MB)
iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 3 packets, 375 bytes) pkts bytes target prot opt in out source destination Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 31 2604 DNAT all -- * * 0.0.0.0/0 192.168.103.246 to:192.168.103.246 Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 1985 138K MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0 0 0 MASQUERADE all -- * eth0 0.0.0.0/0 0.0.0.0/0 Chain VL (0 references) pkts bytes target prot opt in out source destination
iptables -nvL
Chain INPUT (policy ACCEPT 49159 packets, 38M bytes) pkts bytes target prot opt in out source destination Chain FORWARD (policy ACCEPT 32 packets, 3393 bytes) pkts bytes target prot opt in out source destination 13459 582K ACCEPT all -- eth1 * 0.0.0.0/0 0.0.0.0/0 21264 38M ACCEPT all -- eth0 eth1 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT all -- eth1 eth0 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 19109 1919K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 cat /proc/sys/net/ipv4/ip_forward 1
您在两个networking上使用相同的子网,本质上就像它是相同的networking。 首先改变这个,例如使用192.168.109.0/255.255.255作为testing实验的子网并重试。
好吧,现在你分裂了两个子网,另一件事我注意到,你有一些防火墙规则和一些NAT的,对我来说至less没有意义。 尝试刷新你的iptables规则:
iptables -t nat -F iptables -t nat -X iptables -t nat -Z iptables -F iptables -X iptables -Z
然后只读了一个NAT:
iptables -t nat -A POSTROUTING -o eth0 -J MASQUERADE
然后尝试从私人局域网中的一台机器ping生产一个,事情应该工作。
由于两个接口在同一个子网上,只需使用下面的命令桥接它们即可
brctl addbr bridge1
brctl addif bridge1 eth0
brctl addif bridge1 eth1
这应该工作
所以据我了解你有以下情况
subnet1 ---> eth0 -Linux PC- eth1 <----subnet 2
你正试图使用这个Linux PC作为两个子网之间的路由器?
在这种情况下做2件事情:
1)禁用iptables(仅用于testing,您可以稍后启用它们并定义您的规则)
2)在Linux PC上启用IP转发。 把它添加到你的/etc/sysctl.conf
ipv4.ip_forward = 1
并运行
sysctl -p
现在在需要访问子网2的主机的子网1上,您将需要设置静态路由。
我们假设以下子网(根据您的问题)
子网1 192.168.108.0/24 eth0 .13
子网2 192.168.103.0/24 eth1 .1
在这种情况下,在子网1中的主机上,你将需要运行这个
route add -net 192.168.103.0/24 gw 192.168.108.13
在子网2的主机上,你需要运行这个
route add -net 192.168.108.0/24 gw 192.168.103.1
在从子网1中的主机启动到子网2中的主机之后,应该可以正常工作。 反之亦然。