网上很多教程都是针对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

欢迎关注我的公众号“灯珑”,让我们一起了解更多的事物~

你也可能喜欢

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注