我有一个外部设备 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/