我可以使用 ufw 设置端口转发吗?

tin*_*nny 36 linux firewall iptables port-forwarding ufw

我目前使用 ufw 来强制执行一些基本的防火墙规则。是否也可以使用 ufw 进行端口转发?

特别是我想将传入流量转发到我的服务器(运行 ufw 的同一台机器)在端口 80 到端口 8080 上。(http 流量转发到 tomcat)

oos*_*hro 57

假设您要将发往 80 的请求转发到侦听端口 8080 的服务器。

请注意,您需要确保端口 8080 被允许,否则 ufw 将阻止重定向到 8080 的请求。

sudo ufw allow 8080/tcp
Run Code Online (Sandbox Code Playgroud)

没有用于设置端口转发的 ufw 命令,因此必须通过配置文件来完成。将下面的行添加到/etc/ufw/before.rules,在该filter部分之前,就在文件的顶部:

*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
COMMIT
Run Code Online (Sandbox Code Playgroud)

然后重新启动并启用 ufw 以在启动时启动:

sudo ufw enable
Run Code Online (Sandbox Code Playgroud)

  • 你能一行一行地解释一下吗?另外,不是有类似`ufw forward 80 to 8080`的东西吗?我认为 UFW 并不复杂。 (8认同)
  • 看起来没有用于设置端口转发的 ufw 命令,因此必须通过配置文件来完成。有关配置文件语法的更多详细说明,请访问:http://www.frozentux.net/iptables-tutorial/iptables-tutorial.html#CONFIGOPTIONS (4认同)

Bry*_*sen 8

由于 ufw 0.34 ufw 支持转发规则。

例子: sudo ufw route allow in on eth0 out on eth1 to 10.0.0.0/8 port 8080 from 192.168.0.0/16 port 80

您还需要确保net.ipv4.ip_forward启用了 sysctl 。对于大多数发行版,这是通过编辑/etc/sysctl.conf和运行sysctl -p或重新启动来完成的。

但是,ufw 不通过其简单的界面支持 NAT。

  • 您需要启用的是`net.ipv4.ip_forward`,而不是`net.ipv4.forward`。 (2认同)