一、 iptable让内网机器通过跳板机能够上网
测试主机
A IP:192.168.0.10 #无网络服务器
B IP:192.168.0.11 公网ip:110.110.110.110 #有网络服务器
目的
使A(192.168.0.10)服务器通过B(192.168.0.11)服务器能上公网
有网络服务器B执行
#开启内核转发
sed -i 's/.*net.ipv4.ip_forward=.*/net.ipv4.ip_forward=1/' /etc/sysctl.conf|grep "net.ipv4.ip_forward"
sysctl -p #生效
#检查:
cat /proc/sys/net/ipv4/ip_forward #返回1表示正常
#配置iptables
iptables -t nat -A POSTROUTING -s 192.168.0.10/32 -j SNAT --to 110.110.110.110 #解释,将发过来包的源地址为192.168.0.10/32(无网络服务器地址范围)修改为110.110.110.110 (有网络服务器ip)
iptables save #保存配置
无网络服务器A执行
测试步骤(可选)
ip route add 223.5.5.5/32 via 192.168.0.11 #223.5.5.5/32为访问的公网网段范围,192.168.0.11为有网络服务器地址
ping 223.5.5.5 #能通表示没问题
ip route del -net 223.5.5.5/32 gw 192.168.0.11 #删除测试步骤
正式步骤
vim /etc/netplan/50-cloud-init.yaml #修改网卡配置,50-cloud-init需要修改为对应机器的
#修改默认网关,如无则添加,如下:gateway4: 192.168.0.11 192.168.0.11为有网络服务器私网地址
interfaces: [enp125s0f0,enp125s0f1,enp125s0f2,enp125s0f3]
addresses: [192.168.0.10/24 ]
gateway4: 192.168.0.11
nameservers:
使配置生效
sudo netplan apply
查看路由表
route -n
输入类似如下
0.0.0.0 192.168.0.11 0.0.0.0 UG 0 0 0 enp1s0f0
192.168.0.10 0.0.0.0 255.255.255.0 U 0 0 0 enp1s0f0
可以测试访问公网了