所以我一直在尝试将运行 Mint 的 linux 盒子转换成路由器。 eth0 有一个公共地址,其 IP 地址为 71.xx.xx.xx。我创建了一个 eth0:0 并将其设置为 IP 地址 10.0.0.100。我在 eth0 上启动了一个 DHCP 服务器(因为它不会使用 eth0:0),并且提供 10.0.0.101 和 10.0.0.200 之间的地址。我可以在同一台机器上的 eth0 和 eth0:0 之间 ping 通。我有另一台笔记本电脑通过交换机连接到 Linux,它能够通过 DHCP 服务器接收 ip 地址。问题是如何将流量从 eth0:0 路由到 eth0,反之亦然,以便 10.0.0.x 专用网络上的计算机可以通过 eth0 上的静态 IP 访问互联网。
答案1
您至少需要2个接口能够通过路由机制进行转发。这些接口应该是物理接口(例如 eth0 eth1)、vlan (eth0.1 eth0.2)、vpn (tun)、bridge (br0)、bond...但不是别名。别名只是将更多 IP 附加到同一接口的一种方式。
但是,由于您拥有私有 IP 地址,因此您可以使用 Netfilter (iptables) 防火墙规则执行 SNAT 和 DNAT 来转发 IP 流量。
答案2
首先启用转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
这应该就是您所需要的,因为您的“网关”可以看到双方。如果没有,您可能需要考虑 natting,因为使用iptables
允许转发的传统方法仅适用于单个 NIC。
答案3
尝试
# Ensure that ip forwarding is active
echo 1 > /proc/sys/net/ipv4/ip_forward
# Masquerade local net with public IP
iptables -I POSTROUTING -t nat -o eth0 -j SNAT --to-source 71.xx.xx.xx
答案4
首先启用转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
然后试试这个:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth0:0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0:0 -o eth0 -j ACCEPT