一、控制台:弹性云服务器
1.点击实例名称
2.点击网卡信息
3.关闭 源/目的检查
二、控制台:虚拟私有云VPC
1.点击路由表,进入路由表控制台
2.添加路由规则
三、登录服务器设置
1.登录有公网IP的那台服务器
2.确保需要上网的服务器和有公网的服务器同一内网
3.复制脚本执行
下面脚本更具个人情况更改网卡名称,个人开的华为云ECS服务器网卡名称好像都是叫 eth0 ,感觉是华为云的话应该没啥要改的
/etc/init.d/SNAT.sh
#!/bin/bash
### BEGIN INIT INFO
# Provides: snat
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start SNAT daemon
# Description: Start SNAT daemon
### END INIT INFO
iptables_set_snat() {
#获取本机IP
IP_addr=$(ip a s | grep eth0 | awk '{print $2}' | awk 'NR==2{print}')
IP=${IP_addr%/*}
#获取网段
Network=$(route -n | grep eth0 | awk 'END{print $1}')
Mask=${IP_addr#*/}
Network_segment=$Network/$Mask
#开启路由转换
echo net.ipv4.ip_forward = 1 >>/etc/sysctl.conf
sysctl -p
#设置SNAT
iptables -t nat -A POSTROUTING -s $Network_segment -j SNAT --to-source $IP
#允许目标 forward
iptables -A FORWARD -d $Network_segment -j ACCEPT
iptables -A FORWARD -s $Network_segment -j ACCEPT
#保存已设置的规则
iptables-save >/etc/iptables.rules
}
iptables_set_snat
4.执行脚本
chmod 755 /etc/init.d/SNAT.sh
#执行
bash /etc/init.d/SNAT.sh
5.查看iptables 规则
iptables -nL
iptables -t nat --list
四、测试服务器通网
测试结果ok,同一vpc的服务器现在可以通过有公网IP的服务器进行访问外网
五、 设置开机执行
# 开启启动执行
cd /etc/init.d
sudo update-rc.d SNAT.sh defaults 90
# 取消开机执行
cd /etc/init.d
sudo update-rc.d -f SNAT.sh remove