我有以下网络:
http://i.stack.imgur.com/rapkH.jpg
我希望通过服务器和其他路由器将连接到192.168.0.1路由器的设备的所有流量发送到192.168.10.1路由器(最终到达Internet)。差不多2天过去了,我无法确定问题所在。
在互联网上搜索某些类似的配置时,我发现了一些与我的需求有某种关系的文章,但建议的解决方案似乎对我不起作用。这是一篇类似的文章:https://serverfault.com/questions/431593/iptables-forwarding-between-two-interface
我为配置过程完成了以下步骤:
从192.168.1.1路由器为服务器上的eth0设置静态IP地址192.168.1.90
从192.168.0.1路由器为服务器上的eth1设置静态IP地址192.168.0.90
转发从192.168.0.1路由器到eth1接口上的服务器的所有流量似乎正在工作。路由器固件有一些选项可以将所有端口的所有流量重定向到指定的地址。
在服务器上添加了以下规则(仅限以下规则,没有任何其他规则):
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth1 -o eth0 -m state -–state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
我也尝试过改变
iptables -A FORWARD -i eth1 -o eth0 -m state -–state RELATED,ESTABLISHED -j ACCEPT
到
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
但仍然无效。
添加以下内容后,为运行CentOS的服务器启用数据包转发:
echo 1 /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward = 1
在服务器重启并额外检查以查看上面的所有配置仍然可用后,我试图再次看到我是否可以从连接到192.168.0.1/24局域网的计算机ping 192.168.1.1的路由器但是它没有用。
服务器安装了tshark(console wireshark),我发现当从连接到192.168.0.1路由器的计算机向192.168.1.1发送ping时,192.168.0.90(eth1)接收到ping,但它没有按规则告诉它将它转发到eth0接口:
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
并且现在不知道为什么会这样。
问题:
iptables似乎没有像我期待的那样工作。是否需要从iptables规则中添加NAT表以将流量重定向到正确的位置,或者我已经做了什么其他错误?
我想使用tshark来查看服务器上的流量,因为我觉得这样做最好。你知道更好的东西来捕获流量并进行分析吗?
答案 0 :(得分:0)
根据@Sebastian Strajan的要求,这里是已发布的答案。
问题在于各自网络上的节点不知道使用192.168.1.90/192.168.0.90作为其他子网的网关。快速解决方法是在每个节点上指定一个静态路由,指定90节点作为到另一个子网的网关。
编辑:删除了关于将DHCP服务器用于路由的声明。我说错了。长期解决方案可能是使用静态路由配置路由器。