将计算机配置为 Web 服务器和路由器

将计算机配置为 Web 服务器和路由器

首先我要说一下,我在网络方面的经验很少。

语境:我有一台运行 Ubuntu 18.04 LTS(bionic-dev)的机器,它在端口 8050 上托管一个网页。该机器还托管一个热点,使用以下方式建立:

nmcli device wifi hotspot ifname wl1ps0 ssid QuickHotspot band bg channel 6 password "password"

Bionic-dev 通过以太网连接到我的本地网络,我可以通过以下方式访问 8050 上的页面:http://bionic-dev:8050/来自也连接到我的本地网络的设备。

问题:如何从连接到 QuickHotspot 的设备访问 8050 上的页面?

我倾向于设置某种端口转发,但我能找到的所有示例都将路由到执行转发的路由器下游的机器。在这种情况下,路由器需要转发到它自己的端口 8050。

我认为解决方案涉及更新 iptables,但正如我之前所说,网络对我来说相当陌生。

答案1

用于ip -a查找分配给 wl1ps0 的 IP 地址。

确保 Web 服务器也在监听此接口:lsof -i :8050。如果没有,请更新您的 apache 配置(可能是 /etc/apache2/sites-enabled/000-default.conf)。请注意,如果在启动 Web 服务器后设置了热点,您可能只需要重新启动它以使其也在 wl1ps0 上监听:sudo service apache2 restart

然后,对于连接到 QuickHotspot 的系统,使用 http://:8050/

这可能比打开端口转发更容易、更安全。

答案2

我可以通过执行以下操作来解决问题:

nmcli device disconnect wlp1s0
iptables -F
iptables -t nat -F
nmcli device wifi hotspot ifname wlp1s0 ssid QuickHotspot password "password"
iptables -t nat -A PREROUTING -s 10.42.0.0 -p tcp -j REDIRECT --to-ports 8050
sysctl -w net.ipv4.ip_forward=1

这将断开热点,重置 iptables,重新启动主机,创建转发规则,然后启用转发。我故意省略了指定热点中的频段或频道的参数(这会导致命令有时会因某种原因挂起)。nmcli 命令在调用时会创建一些自己的 iptable 规则,这就是我断开并重新连接热点接口的原因。

然后我重新启动了 Web 服务器。(为了文档的完整性,它是一个使用 Mojolicious::Lite 的 perl 服务器。托管页面还向 www 上的其他页面发出 http 请求。)

我能够通过此页面找到解决方案:

https://abidmujtaba.blogspot.com/2016/07/ubuntu-create-wifi-hotspot-access-point.html

相关内容