需要一些关于配置转发和伪装 iptables 规则的帮助
鉴于我有以下配置:
交换机1---- (eth1)-----路由器---- (eth2)-----交换机2
|
|
(eth0)
|
|
互联网
多台 PC 也通过 switch1 和 switch2 连接
我在 Ubuntu 服务器上运行此网络,我假设 eth1 和 eth2 具有相同的 IP 地址,因为所有连接 PC 的默认网关都是此路由器的 IP 地址。
所以我所做的是:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth2 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
自动 lo
iface lo inet 环回自动
eth0
iface eth0 inet 静态
地址 10.151.74.30
网络掩码 255.255.255.252
网关 10.151.74.29
自动 eth1
iface eth1 inet 静态
地址 172.16.0.1
网络掩码 255.255.255.0
自动 eth2
iface eth2 inet 静态
地址 172.16.0.1
网络掩码 255.255.255.0
所以问题是,所有通过 eth2 连接到路由器的 PC 都无法连接到互联网(tuntap),但所有通过 eth1 连接的 PC 都可以。
因此,我在配置 iptables 时是否遗漏了什么?还是我误解了?
非常感谢您的帮助和建议。我一个月前才开始学习计算机网络,所以基本上需要指导。非常感谢 :)
答案1
您不能让两个接口使用相同的 IP 地址。此外,即使您将一个接口的 IP 地址更改为同一网络中的另一个地址(例如 172.16.0.2),它也不会正常工作。
为什么需要在同一网络中使用 2 个接口?交换机交换机1和交换机2见面了吗或者他们分开了?
如果它们互相看到,那么你的配置肯定有问题。
如果没有,你可以设置另一个网络交换机2,例如 172.16.1.0/24,一切都应该没问题。
echo 1 > /proc/sys/net/ipv4/ip_forward
顺便说一句:如果您有,net.ipv4.ip_forward = 1
则不需要/etc/sysctl.conf
。