嗨,我想知道是否有人可以尝试给我指明正确的方向......
我有一个简单的 Web 服务器。它运行良好,但现在我将其设置为在云中运行,但在从运行它的机器外部连接到它时遇到了问题。详情:
- 我在 Amazon Lightsail Ubuntu 实例上运行
- 该服务器在端口 8443 上提供 HTTPS 服务
- 我
iptables
曾经- 接受端口 8443 上的所有
- 接受端口 443 上的所有
- 从端口 443 转发到端口 8443
- 我已将 Amazon Lightsail 设置配置为通过 AWS 控制台打开端口 443
现在..
- 我可以使用 lightsail 实例验证服务器是否正在运行
wget https://0.0.0.0:8443 --no-check-certificate
,该实例已成功完成并下载网页 - 然而这失败了
wget https://<amazon lightsail instance external static IP>:8443 --no-check-certificate
:Connection refused
- 就像
wget https://<amazon lightsail instance external static IP>:443 --no-check-certificate
什么原因阻止了外部 TCP 连接到我的服务器?
iptables 设置:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:8443
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
此外 UFW 未运行
> sudo ufw status
Status: inactive
[编辑] 使用 AWS 控制台向全世界开放 8443 端口后,我能够使用 进行远程连接wget https://<external ip>:8443
,因此看起来除了端口转发之外,一切正常iptables
感谢您的任何想法!
答案1
为了让一切按照我想要的方式进行,我做了以下事情:
接受端口 443 和 8443 上的传入 TCP 连接
sudo iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 8443 -j ACCEPT
将端口 8443 重定向至 443
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
保存对 iptables 的更改
sudo iptables-save