网上很多教程都是针对centos的,而使用iptables的方案在ubuntu下,我尝试了很久都没搞定。最终还是使用ufw来解决问题的。
方案
需要两台ECS机器:A(具有固定公网ip),B(私网机器)。
目标:让B能够访问公网。
启用内核转发
sysctl -w net.ipv4.ip_forward=1
sysctl -p
在机器A上进行配置
首先为A新增一块弹性网卡,然后配置netplan,使其成功上线。
然后在机器A上输入以下内容:
sudo ufw allow 22
sudo ufw enable
允许内网接口所有传入流量
假设eth0为外网接口,eth1为内网接口
ufw allow in on eth1 from 0.0.0.0/0
ufw允许转发:
编辑/etc/default/ufw
把这个值改为ACCEPT:
添加NAT规则
vim /etc/ufw/before.rules
然后在文件末尾的COMMIT后面,加多一行,复制以下内容进去:
#NAT table rules 启用nat 表
*nat
# 允许POSTROUTING 链
:POSTROUTING ACCEPT [0:0]
# SNAT
# 转发eth0接口的数据包,请将eth0更改为你对应的接口,把网段改为eth1所在的内网网段!!!
-A POSTROUTING -s 172.31.0.0/16 -o eth0 -j MASQUERADE
# DNAT
# Port Forwardings 写你的端口转发条目即可
# -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to-destination 172.16.0.2
# don't delete the 'COMMIT' line or these rules won't be processed
COMMIT
配置阿里云的VPC的交换机
添加一条路由表项,指向机器A的内网弹性网卡即可。
在机器B上测试
这个时候机器B就能上网了。
转载请注明来源:https://longjin666.cn/?p=1831
欢迎关注我的公众号“灯珑”,让我们一起了解更多的事物~