虽然真的太简单,但我还是踩坑了。尴尬,所以写了这个文档记录一下。
场景:一台没有外网的node服务器,通过另一台有外网的master服务器,来访问外网。(这里使用的是华为云)
node | 192.168.0.99 |
---|---|
master | 192.168.0.102 |
华为云与阿里云不同的是,华为云网卡有一个“源/目的检查”(默认开启,在master这里需要关了),阿里云的话,这一步忽略。 | |
![]() | |
![]() | |
![]() | |
![]() | |
##测试是否可以跟外网通信。 | |
先在master执行ping www.baidu.com | |
接下来的操作,都在master,node不需要做。 |
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p /etc/sysctl.conf
iptables -F ##清理防火墙规则,根据情况使用
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to-source 192.168.0.102 ##地址转换
iptables -t nat --list
node节点上ping www.baidu.com
这里就已经通了
扩展
redirect | 将数据包重定向到另一台主机的某个端口,通常用实现透明代理和对外开放内网某些服务。 |
---|---|
snat | 源地址转换,改变数据包的源地址。 |
dnat | 目的地址转换,改变数据包的目的地址。 |
masquerade | IP伪装,只适用于ADSL等动态拨号上网的IP伪装,如果主机IP是静态分配的,就用snat。 |
参考文档: | |
华为云官方文[https://support.huaweicloud.com/usermanual-ecs/ecs_03_0705.html] | |
他人分享的阿里云文档https://note.youdao.com/ynoteshare1/index.html?id=1908e268d670cd426f5629ea395f847b&type=note |