我有两台运行 Ubuntu 14.04.3 LTS 的服务器,并且都配置了两个网络接口,/etc/network/interfaces
因为我不使用 NetworkManager。
服务器 1 通过网络接口 1 连接到互联网,而网络接口 2 用于连接到服务器 2。我可以这样做SSH从 Server1 到 Server2 没有任何问题。但是,Server2 未连接到互联网。
我如何与 Server2/interface2 共享 Server1/interface1 的互联网连接?
/etc/network/interfaces
如下所示;
# The loopback network interface
auto lo
iface lo inet loopback
auto em1
allow-hotplug em1
iface em1 inet static
address 192.168.1.70
netmask 255.255.255.0
gateway 192.168.1.1
auto em2
allow-hotplug em2
iface em2 inet static
address 192.168.2.72
netmask 255.255.255.0
编辑 回应评论:“internet”->srv1/int1 srv1/int2 <->srv2/int2
其中“internet”是连接到另一个房间的路由器的单个以太网插座。我打算买一个路由器,但目前我需要一个临时解决方案来将 srv2 连接到互联网(以允许安装/更新软件包)。
答案1
设置服务器1
配置 iptables 进行 NAT 转换,以便数据包能够正确地通过 Server1 路由:
sudo iptables -A FORWARD -o em1 -i em2 -s 192.168.2.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o em1 -j MASQUERADE
保存新添加的iptables规则:
sudo iptables-save | sudo tee /etc/iptables.sav
"exit 0"
并在in之前添加以下行/etc/rc.local
:
iptables-restore < /etc/iptables.sav
通过启用 IP 转发配置 Server1 以在两个接口之间进行路由:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
打开/etc/sysctl.conf
并取消注释:
net.ipv4.ip_forward=1
设置 Server2
em1 是 Server2 上的网卡,通过交叉线连接到 Server1 上的 em2。Server2 中的 em1 可以设置任意 IP 地址,只要与 Server1 中 em2 的子网(192.168.2.0/24)匹配即可,例如:192.168.2.100
停止社交
sudo /etc/init.d/networking stop
为 em1 添加默认网关/etc/network/interfaces
:
auto em1
iface em1 inet static
address 192.168.2.100
netmask 255.255.255.0
gateway 192.168.2.72
该地址应该与 Server1 中 em2 的 IP 地址相匹配。
编辑/etc/dhcp/dhclient.conf:
prepend domain-name-servers 8.8.8.8,8.8.4.4;
8.8.8.8 和 8.8.4.4 是 Google DNS。如果您希望使用 ISP 的 DNS 服务器,只需替换它们即可。
重启网络
sudo /etc/init.d/networking restart
现在 Server2 应该具有与 Server1 共享的互联网连接。