我对 Linux 路由非常陌生。虽然我理解它的概念,但实际的路由命令我却不知道。我自己尝试过 ip route 和 ip rule,但没有用。因此在这里发了一个问题。
这是我当前的设置。带有两个 NIC 的 Centos 服务器
eth0 (external and open to the internet)
- static IP: 192.168.13.10
- GW: 192.168.13.1
eth1 (internal private)
- static IP: 192.168.15.10
- GW: Not defined yet. (as I would imagine 192.168.13.1 to be catch all)
具有一个 NIC 的 Centos 客户端
eth0
- Static IP: 192.168.15.200
- GW: 192.168.15.10
首先,我希望 Centos 客户端能够仅通过 Centos 服务器连接到互联网。我知道我缺少某种形式的路由表条目才能使上述操作正常工作。有人能帮我指出这一点吗?
其次,我希望 Centos 客户端从 Centos 服务器获取 IP 地址。我在 Centos 服务器上安装了 dhcpd。因此,只需更改 ifcfg-eth0 脚本中的 booproto(从静态更改为 dhcp)就足够了,还是需要在 centos 客户端上进行任何路由更改?
答案1
约翰是对的,但有些选修的防火墙规则不是可选的,而是必需的。要将流量路由到互联网,您需要 IP 转发,正如 John 所解释的那样,但您还需要 IP 伪装 (NAT)。
编辑 /etc/sysctl.conf 并添加
net.ipv4.conf.default.forwarding=1
重新启动网络服务
service network restart
现在您需要 iptables“NAT”规则:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
我不太熟悉 CentOS,但也许您需要重新启动 iptables 服务或问题iptables save
(或两者)。
答案2
您的现有设置是正确的,但不完整。您需要在 CentOS 服务器上启用数据包转发,并可选地启用某种防火墙来阻止不需要的流量。您的客户端已经尝试通过服务器访问互联网,除非您至少启用数据包转发,否则他们根本无法这样做。
DHCP 是一个单独的问题,但同样,客户端不需要更改路由 - 如果 DHCP 服务器向客户端提供与现在相同的 IP 信息,它将按您的预期工作。