我正在尝试将具有两个 NIC 的 Centos 服务器设置为路由器。eth0 连接到外界,eth1 连接到 Ubuntu 客户端。
这是服务器上的 eth0:
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
TYPE=Ethernet
服务器上的 eth1:
DEVICE=eth1
BOOTPROTO=static
IPADDR=192.168.0.10 # a free address on my network
ONBOOT=yes
TYPE=Ethernet
我的服务器已打开 IPv4 数据包转发,并且我的 iptables 仅包含:
# iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
# iptables --append FORWARD --in-interface eth1 -j ACCEPT
我的 Ubuntu 客户端有这个/etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
gateway 192.168.0.10
但我无法从服务器为我的客户端获取 Internet 连接。我甚至无法从客户端 ping 我的服务器:
$ ping 192.168.0.10
Destination Host Unreachable
答案1
如果您发布的配置正确,那么只有我一个人注意到 Centos 服务器上的 eth1 和客户端上的 eth0 共享同一个 IP。我的习惯是,如果我要将一台机器用作 Linux 网关,我通常使用 .1 作为最后一个八位字节。因此服务器上的 eth1 将是 192.168.0.1,而客户端上的 eth0 将是 192.168.0.10。当然,您必须在route add default gw 192.168.0.1
客户端上输入网关的路由。我稍后会再次查看您的 iptables 设置,以检查是否看到任何内容。
服务器上的 eth0 使用 dhcp,如果能从 ISP 获取所需的一切,那就没什么问题了……(哦,你不需要对路由或 iptables 做任何事情,只需 ping Centos 路由器即可。路由和 iptables 仅在尝试访问外部世界时才会发挥作用,因此让我们一次只处理一件事,先让客户端与路由器对话。那个 ip 冲突可能是阻止它的原因。)祝你好运!!!
答案2
首先,您是否在服务器上运行 DHCP?
从上图可以看出,服务器上的 eth0 是“内部”接口。上面的网络配置建议服务器(又称路由器)上的内部接口使用 DHCP。这种配置有什么原因吗?通常最好将网关 IP 地址设置为静态。此外,服务器 eth0 的 IP 地址应该不同于 192.168.0.x/24(我假设您在这里使用 24 位掩码)。
客户端 eth0 配置(我假设这是客户端上的唯一接口,并通过交换机/集线器/l2 设备将客户端连接到服务器 eth0 端口)也使用 DHCP。使用静态 IP 地址进行测试可能更容易。同样,客户端 IP 地址不应位于 192.168.0.x/24 子网上。
最后,客户端上的网关应设置为服务器上的 eth0 ip 地址。
服务器上的路由表应显示 192.168.0.x/24 和 192.168.1.x/24(您可以使用任何其他私有 IP 地址),因为它们直接与其默认路由相连,指向该网段的网关 IP 地址(不是 192.168.1.10 而是您的 ISP 提供给您的 gw)。
韋斯