如何配置UFW以允许IP转发?


18

我的家庭服务器上安装了UFW,OpenVPN和Virtualbox。我为虚拟机来宾(vboxnet0)设置了一个仅主机的网络,其IP范围为10.0.1.0,在OpenVPN连接的另一端配置了另一个IP范围为10.0.0.0。

IP转发是在主机上配置的,因此,禁用 UFW时,它们可以相互通信而不会出现任何问题。但是,我想运行UFW,因为此主机可以通过Web访问,并且我需要一些访问控制。

如何配置UFW允许此类流量?

我尝试了以下各种组合:ufw allow allow in|out on vboxnet0|tun0没有成功。

我的UFW规则是:

root@gimli:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
Anywhere                   ALLOW       10.0.0.0/16
Anywhere on vboxnet0       ALLOW       Anywhere
Anywhere on tun0           ALLOW       Anywhere

Anywhere                   ALLOW OUT   Anywhere on vboxnet0
Anywhere                   ALLOW OUT   Anywhere on tun0

任何帮助将不胜感激。

Answers:


20

我想到了。

编辑/etc/default/ufw并设置DEFAULT_FORWARD_POLICYACCEPT

DEFAULT_FORWARD_POLICY="ACCEPT"

10
有什么方法只允许它转发特定的端口,而不是将其设置为接受所有内容吗?
Marcus Downing

1
我猜您需要在编辑文件后重新启动ufw:service ufw restart
Minh Danh

10

现在可以实现-从ufw手册页:

不用于主机本身的流量规则,而是用于应通过防火墙路由/转发的流量规则,应在规则之前指定route关键字(路由规则与PF语法明显不同,而应考虑netfilter FORWARD链约定) 。例如:

     ufw route allow in on eth1 out on eth2

这将允许所有路由到eth2并进入eth1的流量通过防火墙。

     ufw route allow in on eth0 out on eth1 to 12.34.45.67 port 80 proto tcp

该规则允许进入eth0的所有数据包穿过eth1上的防火墙,到达12.34.45.67上的tcp端口80。

除了路由规则和策略,还必须设置IP转发。这可以通过在/etc/ufw/sysctl.conf中设置以下内容来完成:

     net/ipv4/ip_forward=1
     net/ipv6/conf/default/forwarding=1
     net/ipv6/conf/all/forwarding=1

然后重新启动防火墙:

     ufw disable
     ufw enable

请注意,设置内核可调参数是特定于操作系统的,并且ufw sysctl设置可能会被覆盖。有关详细信息,请参见sysctl手册页。


1
对于我们希望允许OpenVPN服务器上的OpenVPN客户端之间进行tcp流量的用户,此方法有效。例如:ufw路由tun0上允许进入tun0上
登录

ufw route自0.34版以来就存在记录
-Joril

7

如果在/ etc / default / ufw中将DEFAULT_FORWARD_POLICY设置为ACCEPT,则无论用户界面的设置如何,防火墙都将转发所有数据包。

我认为用户界面仅用于简单的输入/输出过滤。对于转发,您需要在/etc/ufw/before.rules中添加iptables规则,如下所示:

-A ufw-before-forward -i eth1 -p tcp -d 192.168.1.11 --dport 22 -j ACCEPT

您可能已经有了一条规则,该规则允许连接由内向外,而另一条规则允许来自相关和已建立的tcp会话的数据包重新进入。

我不是iptables专家,我花了很长时间才弄清楚这一点(使用ip6tables,但应该类似)。也许这不是您所需要的全部。

最好的问候


4

这个ufw命令为我很好地工作: sudo ufw default allow FORWARD

确保已应用更改: sudo service ufw restart


这给出了“无效语法”错误。文档说“方向是传入,传出或路由的一种”。
ColinM '18年

@ColinM这对我在Xubuntu 16.04.5 LTS上起作用
baptx

FORWARD就像routed在Ubuntu上使用别名一样
patricktokeeffe
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.