服务器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 # 允许转发指定号段 IP sudo iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d 192.168.1.0/24 -j MASQUERADE
-
配置持久化
sudo apt-get install iptables-persistent sudo netfilter-persistent save sudo systemctl enable netfilter-persistent #这样重启就会自动重新配置
服务器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.12 # 查看 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
- 配置持久化
# Ubuntu 24.04 LTS cd /etc/netplan vi 50-cloud-init.yaml # 或者其他,以自己实际情况 # 以下是配置内容,加#####号部分是新增内容 network: version: 2 ethernets: eno1: dhcp4: true eno2: dhcp4: true enp94s0f0np0: dhcp4: false addresses: [10.0.0.74/24] routes: ##### - to: default ##### via: 10.0.0.12 ##### nameservers: ##### addresses: [223.5.5.5, 223.6.6.6, 8.8.8.8, 8.8.4.4] ##### enp94s0f1np1: dhcp4: true ---------------------- #CentOS sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 # 在文件中添加或修改以下行: GATEWAY=10.0.0.12 sudo systemctl restart network
- 验证
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