我目前有以下设置,我需要服务器#1使用其第二个NIC通过服务器#2访问互联网。
使用静态路由可以实现吗?如果可以,应该将哪条路由添加到哪里?
目前服务器1可以ping通服务器2,服务器2可以访问互联网,并且可以ping通服务器1。
答案1
您应该在服务器 2 上桥接 NIC 1 和 NIC 2 之间的连接。将服务器 1 上的 IP 更改为 192.168.1.x 之类的地址,并将默认网关更改为 192.168.1.254。您还必须将服务器 2 NIC 1 的 IP 更改为 192.168.1.y。这样,服务器 1 就可以联系其默认网关(路由器 1),后者会将 IP 数据包转发到互联网。
另一个解决方案是配置服务器 2,使其使用 NAT 将从服务器 1 收到的数据包转发到其默认网关。这样,服务器 2 将成为半路由器。
答案2
假设是linux。
你需要做两件事:
- 开启 IP 转发
- 设置伪装源网络地址转换 (SNAT)
保持一切原样并检查 IP 转发是否已打开。
sysctl net.ipv4.ip_forward
[root@somehose ~]$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
如果将其设置为 0(如上例所示),那么您需要将其设置为 1(开)。
编辑/etc/sysctl.conf
确保:
net.ipv4.ip_forward = 1
运行sysctl -p
重新加载sysctl.conf
,将导致读取并设置该文件中的所有设置。由于它位于文件中,因此它们在启动时也会被保留。
然后再次运行 sysctlnet.ipv4.ip_forward
以确保它确实发生了变化。
[root@somehose ~]$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
现在我对上述内容非常有信心。
您还需要在 server2 上打开 SNAT。假设服务器 #2 NIC #2 是 eth1,服务器 #2 NIC #1 是 eth0
我对实际的命令语法不是 100% 确定,而且我也没有可以测试的地方,但您可以直接在 Google 上搜索“伪装 iptables SNAT”,然后就可以找到操作方法。想一想,您可以用 Google 搜索一下,然后得到完整的答案。没关系。
iptables -t nat -A POSTROUTING --out-interface eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 10.10.10.3
您需要将其放入适合您的发行版的文件中,以便它在重启后仍然有效。