Ubuntu 20.04防火墙 UFW做NAT转换,IP伪装,端口重定向,端口映射

参考文档:
《Ubuntu 防火墙IP转发做NAT,内网集群共享网络(简单)》

《focal (8) ufw-framework.8.gz手册》
项目需要一台路由器以实现NAT共享访问外网和端口映射访问内网,索性用ubuntu20.04服务器使用ufw防火墙实现功能。

1 需求

硬件:至少两个网口的服务器
软件:ubuntu 20.04+ufw
名词解释:
ip伪装:在ubuntu里,nat被称为ip伪装,意为“允许来自内网口eno1上使用私网地址(如10.0.0.0/20)的计算机共享外网口eno2上的单个IP地址”
端口重定向:要将外网口eno2上的某个端口转发到位于内网地址10.0.0.X上的某个端口,比如将外网口eno2上的tcp端口80转发到位于10.0.0.3的Web服务器。

2 UFW基本操作:

2.1 查看当前状态和防火墙规则

ufw status    #Status: active 服务激活;如果没有配置规则,将不显示防火墙规则

2.2 设置默认动作

ufw default allow/deny    #对未配置的端口执行默认允许/拒绝动作

2.3 添加允许/拒绝端口的规则

ufw allow 22/tcp    #允许 22 tcp封包;还可以换成 22/udp,表示允许22端口 udp封包
ufw deny 22       #拒绝 22 端口 (udp+tcp)

2.4 删除允许/拒绝端口的规则

ufw delete allow/deny 20    #删除规则同添加一致 添加 22/tcp就删除 22/tcp,不能删除 22

2.5 启动/关闭/重载防火墙
通过ssh远程连接建议先设置 22/tcp允许规则再启动防火墙服务

ufw enable/disable/reload

3 防火墙配置转发

3.1 首先开启系统的IP转发

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1    #增加或修改该字段,值设为1

3.2 生效

sysctl -p

3.3 设置防火墙的转发(修改俩个配置文件)
3.3.1 修改 /etc/default/ufw

vim /etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"    #该值设为ACCEPT

注意:
# 默认规则内容都包含在 *filter…COMMIT 内
# 添加如下内容时注意 *nat…COMMIT 不能放在 *filter…COMMIT 内
#10.0.0.0/20是内网网段

3.3.2 修改 /etc/ufw/before.rules

vim /etc/ufw/before.rules
#在末尾增加以下字段

*nat
:PREROUTING - [0:0]
:POSTROUTING - [0:0]
-A POSTROUTING -s 10.0.0.0/20 -o eno2 -j MASQUERADE
COMMIT

3.3.3 重启防火墙,成功

ufw disable
ufw enable

4 设置端口重定向:

4.1 将外网口eno2上的tcp端口80转发到位于10.0.0.3的Web服务器。
4.1.1编辑/etc/ufw/sysctl.conf

vim /etc/ufw/sysctl.conf
net.ipv4.ip_forward=1

4.1.2编辑 /etc/ufw/before.rules,并在nat段里增加

vim /etc/ufw/before.rules

-A PREROUTING -p tcp -i eno2 --dport 80 -j DNAT --to-destination 10.0.0.3:80

4.1.3 增加ufw规则

ufw route allow in on eno2 to 10.0.0.3 port 80 proto tcp
ufw allow 80

删除以上ufw添加的从eno2口进来并转发到10.0.0.3端口80的数据:
ufw route delete allow in on eno2 to 10.0.0.3 port 80 proto tcp
拒绝从eno2口进来转发到主机10.0.0.3端口22的数据:
ufw route reject in on eno2 to 10.0.0.3 port 80

4.1.4 重启ufw

ufw reload

4.2 将62022端口转发到10.0.0.3的22端口
4.2.2编辑 /etc/ufw/before.rules,并在nat段里增加

-A PREROUTING -p tcp -i eno2 --dport 62022 -j DNAT --to-destination 10.0.0.3:22

4.2.3 增加ufw规则

ufw route allow in on eno2 to 10.0.0.3 port 22
ufw allow 62022

4.2.4 重启ufw

ufw reload

5 修改ssh端口为64422

5.1 修改/etc/ssh/sshd_config

vim /etc/ssh/sshd_config
port 22
port 64422

5.2 重启ssh服务

service ssh restart

5.3 修改ufw

ufw allow 64422

5.4 重启ufw

ufw reload

5.5 ssh 新端口64422
5.5 成功后再修改/etc/ssh/sshd_config

vim /etc/ssh/sshd_config
#port 22

5.6 重启ssh服务

service ssh restart

猜你喜欢

转载自blog.csdn.net/m0_49212388/article/details/112261558