仅本地可访问服务器

仅本地可访问服务器

嗨,我想知道是否有人可以尝试给我指明正确的方向......

我有一个简单的 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-certificateConnection 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

相关内容