![使用两台设备通过 Linux 服务器路由流量](https://linux22.com/image/796763/%E4%BD%BF%E7%94%A8%E4%B8%A4%E5%8F%B0%E8%AE%BE%E5%A4%87%E9%80%9A%E8%BF%87%20Linux%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%B7%AF%E7%94%B1%E6%B5%81%E9%87%8F.png)
这是我当前的设置(所有服务器都是 Ubuntu Server Edition 12.04):
服务器 0 有两个设备,eth0 和 eth1。eth0 连接到墙(互联网),eth1 连接到交换机。eth1 在 /etc/network/interfaces 中有以下条目:
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
服务器 1-4 各有一个设备 eth0。它们都连接到交换机,并且都从服务器 0 获取 DHCP 信息。eth0 具有以下接口条目(这是因为服务器 1-4 是无盘节点,它们向服务器 0 请求启动所需的一切):
iface eth0 inet manual
使用此配置,服务器 0 是唯一可以访问互联网的服务器。我该如何路由apt-get
来自服务器 1-4 的任何 Web 请求(例如或 HTTP)通过服务器 0,以便让服务器 1-4 可以访问互联网?这似乎是一个已经遇到过很多次的问题,但我无论如何也想不出如何正确设置网络。
的输出route -n
为:
Destination Gateway Genmask Flags ... Iface
0.0.0.0 123.45.132.254 0.0.0.0 UG ... eth0
123.45.132.0 0.0.0.0 255.255.255.0 U ... eth0
192.168.1.0 0.0.0.0 255.255.255.0 U ... eth1
答案1
您需要做两件事:激活转发(在 /etc/sysctl.conf 中net.ipv4.ip_forward=1
)并使用 iptables 激活 NAT(/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
)。NAT 将专用网络转换为外部 IP,因此内部机器可以上网。此行应由您的防火墙应用。我不知道您使用的是哪种防火墙,因此您必须将其集成到您的配置中。