在 Ubuntu 23.04 上使用 Firewalld 将本地 http 端口转发到外部设备

在 Ubuntu 23.04 上使用 Firewalld 将本地 http 端口转发到外部设备

我有一个外部设备 A,它在端口 80 上发布 HTTP 服务器。它的地址固定为。我可以从任何其他设备在本地网络上192.168.1.107查看 HTTP 服务器。http://192.168.1.107:80

我的 Linux 计算机(Ubuntu 23.04),设备 B,at 192.168.1.105,通过 remote.it 具有一些远程访问功能。我想通过转发端口将 A 的服务器在端口 8080 上公开给 remote.it。在执行此操作之前,我曾成功使用过防火墙,但我无法重现它。

这是 A 的配置,我已将其以太网接口设置为位于外部区域。

# firewall-cmd --zone=external --list-all
external (active)
  target: default
  icmp-block-inversion: no
  interfaces: enp12s0
  sources: 
  services: ssh
  ports: 8080/tcp
  protocols: 
  forward: yes
  masquerade: yes
  forward-ports: 
    port=8080:proto=tcp:toport=80:toaddr=192.168.1.107
  source-ports: 
  icmp-blocks: 
  rich rules: 

# wget localhost:8080
--2023-06-30 18:00:08--  http://localhost:8080/
Resolving localhost (localhost)... 127.0.0.1
Connecting to localhost (localhost)|127.0.0.1|:8080... failed: Connection refused.

# wget 192.168.1.107:80
--2023-06-30 18:09:51--  http://192.168.1.107/
Connecting to 192.168.1.107:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 5901 (5.8K) [text/html]
Saving to: ‘index.html’


正如其他参考文献中提到的,我已完成以下操作:

  • 启用伪装
  • 添加了防火墙端口转发规则
  • 添加了防火墙输入端口许可
  • 使防火墙配置永久化并重新加载
  • 检查防火墙是否仍在运行systemctl status firewalld
  • 检查我的内核是否将 ipv4 转发设置为 1

目标:我可以从设备 C(我的手机)访问http://192.168.1.105:8080并查看网页。如果可行,那么 remote.it 也可以公开它。

有关的: https://www.reddit.com/r/linuxadmin/comments/ub7iow/firewallcmd_firewalld_issues_for_port_forwarding/ https://paulbradley.org/firewalld-port-forwarding/

相关内容