服务器A为内网机器,服务器B和A在同一局域网环境,服务器B可以访问外部网络,现在希望服务器A可以通过服务器B访问外部网络
服务器B上的操作(可访问外网)
-
启用IP转发:
临时处理:
sudo sysctl -w net.ipv4.ip_forward=1
永久启用IP转发:
# 打开文件 vi /etc/sysctl.conf # 加入如下信息 net.ipv4.ip_forward = 1 # 应用更改 sudo sysctl -p
-
配置NAT规则,将所有来自服务器A的流量转发到外网:
先查看网口信息:ifconfig
ip addr
等,找到外网IP对应网口。例如"eno1np0"# 备份信息 sudo iptables-save > iptables-backup.rules # 添加命令 “eno1np0” 为 网口信息 自己视实际修改 sudo iptables -t nat -A POSTROUTING -o eno1np0 -j MASQUERADE # 以下是备用命令 # 删除命令 sudo iptables -t nat -D POSTROUTING -o eno1np0 -j MASQUERADE # 查看命令 sudo iptables -t nat -L -n -v # 恢复备份 sudo iptables-restore < iptables-backup.rules
服务器A上的操作(内网服务器)
- 配置服务器A的默认网关
sudo route add default gw <serverB_IP> # 例如服务器B IP为 10.0.0.12 # route 命令操作 sudo route add default gw 10.0.0.12 # ip 命令操作 sudo ip route add default via 10.0.0.75 # 查看 root@root:~$ ip route show default via 10.0.0.12 dev 网口 ......
- 如果无法上网可能是DNS问题
root@root:~$ sudo vi /etc/resolv.conf # 加入如下信息 # 阿里 nameserver 223.5.5.5 nameserver 223.6.6.6 # google nameserver 8.8.8.8 nameserver 8.8.4.4
- 验证
root@root:~$ ping baidu.com PING baidu.com (110.242.68.66) 56(84) bytes of data. 64 bytes from 110.242.68.66: icmp_seq=1 ttl=49 time=59.6 ms 64 bytes from 110.242.68.66: icmp_seq=2 ttl=49 time=59.2 ms ^C --- baidu.com ping statistics --- 3 packets transmitted, 2 received, 33.3333% packet loss, time 2003ms rtt min/avg/max/mdev = 59.193/59.373/59.553/0.180 ms