使用ufw配置NAT masquerade

安装UFW

sudo apt install ufw

基本配置

  • IPv6

如果Ubuntu server已经激活了IPv6,则确保UFW已经配置支持IPv6,就可以同时管理IPv6和IPv4规则。修改/etc/default/ufw,确保已经激活IPV6

...
IPV6=yes
...
  • 设置默认规则

默认时,UFW设置了拒绝所有进入连接并允许所有外出连接。为了设置默认规则,使用以下命令:

拒绝进入连接策略

sudo ufw default deny incoming

显示输出

Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)

允许外出连接策略

显示输出

  • 允许SSH连接

警告:务必允许SSH连接,否则一旦启动防火墙,将无法远程维护服务器。

这个ssh时根据/etc/services文件配置设置端口,允许22端口。也可以使用如下命令

显示输出

当然,如果需要设置其他防火墙端口,例如SSH是监听2222端口,则使用命令

用户添加的规则,例如上述allow 22会被加入配置文件/etc/ufw/user.rules,内容如下:

  • 激活UFW

在激活ufw的时候,会提示可能会中断已经存在的SSH连接。由于我们已经设置了允许SSH连接的规则,所以可以输入y继续。

此时防火墙规则已经激活,此时,可以使用以下命令检查

显示输出

允许其他访问连接

  • 常用的服务端口开启:DNS,WEB

  • 如果需要X11连接,则会使用一个端口范围6000-60007

  • 特定IP地址允许访问

  • 特定IP地址对端口的访问

  • 允许子网访问

  • 允许子网访问指定端口22

  • 允许特定网络接口

例如允许访问MySQL数据库端口3306

  • 拒绝某个特定IP地址访问

删除规则

基于规则编号删除

  • 首先检查规则编号

例如输出

  • 现在删除规则2

基于激活的规则

或者

停止或重置规则(可选)

  • 停止UFW

  • 重置UFW

NAT masquerade

要使用ufw设置NAT,从内部网络访问外部网络,需要启用IP FORWARD。

注意:ufw有关masquerading的规则被分成了2个不同文件,分别是ufw命令行规则前执行的,和ufw命令行规则之后执行的。

  • 在配置文件/etc/default/ufw修改参数DEFAULT_FORWARD_POLICY:

默认配置是DEFAULT_FORWARD_POLICY="DROP"

  • 修改/etc/ufw/sysctl.conf,取消注释行:

如果是IPv6还要设置

  • /etc/ufw/before.rules添加规则。默认规则配置filter表。nat表中激活masquerading,注意规则添加在filter规则之前:

我的主机设备是一块无线网卡wlp3s0(对外)和一块有线网卡enp0s25(对内192.168.0.0/24),所以设置调整成:

但是内网不能访问外部,最后改成取消接口限制才成功,暂时没有搞清

  • 激活修改:

端口映射

作为局域网的网关防火墙,还需要将外部网络和内部服务器端口映射起来对外提供服务。

  • 简单的端口映射(ssh端口)

另外,我有一个实践:Ubuntu 16 NFS设置 设置了相对复杂的NFS穿透防火墙,可参考。

参考

Last updated

Was this helpful?