我有两台 Ubuntu 服务器:
服务器 1(IP:192.168.10.11)在线并连接到两个网络接口(内部、公共)
服务器 2(IP:192.168.10.10),无公共访问权限(内部)
我正在尝试使用 server1 作为 server2 的默认网关,这是我所做的:
# on online server (Jumpbox)
iptables -t nat -A POSTROUTING -s 192.168.10.10 ! -d 192.168.30.1/24 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
# On offline server
route add default gw 192.168.10.11
两者上都安装了 Docker(172.17.0.0)
它们可以互相 PING 通,但是从 server2 无法 PING 通 Google。
答案1
Debian 风格(偷懒的方式):
编辑/etc/network/interfaces
iface eth0 inet static
address 10.0.0.1
netmask 255.0.0.0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE
懒惰的 Crontab 方式:
编辑/etc/crontab
@reboot root "echo 1 > /proc/sys/net/ipv4/ip_forward; iptables -t nat -A POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE; iptables -t nat -D POSTROUTING -s '10.0.0.0/8' -o eth0 -j MASQUERADE"
Bash 风格:
nano /root/allow_lan_nat.sh
您必须调整适合您的正确 LAN,可能是
192.168.0.0/24(一个 LAN 子网,默认类 C)
192.168.0.0/16(192.168 的所有子网)
172.16.0.0/16(默认类 B)
10.0.0.0/8(默认类 A)
#!/bin/bash
#Ajust the LAN, as above shown
MYLANIP=10.0.0.0/8
#The IFACE that has Internet.
MYINETIFACE=eth0
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s $MYLANIP -o $MYINETIFACE -j MASQUERADE
iptables -t nat -D POSTROUTING -s $MYLANIP -o $MYINETIFACE -j MASQUERADE
跑步bash /root/allow_lan_nat.sh
直接回答你的问题
提醒一下,在我回答这个问题的时候,我不知道界面是什么,所以我假设 ens3 是你面向互联网的界面,否则请像上面一样更新它
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s '192.168.10.0/24' -o ens3 -j MASQUERADE
iptables -t nat -D POSTROUTING -s '192.168.10.0/24' -o ens3 -j MASQUERADE
提醒一下,ens3
必须是面向互联网的界面因此请根据您的需要进行更新。