我的 Ubuntu 22.04 删除了所有来自网络外部的传入请求

我的 Ubuntu 22.04 删除了所有来自网络外部的传入请求

我在安装新的 Ubuntu 服务器时遇到了问题(Ubuntu 22.04.1 LTS-5.15.0-56-通用 x86_64)

我运行了 PHP 内置服务器,并在所有接口上监听端口 8080:

php -S 0.0.0.0:8080

当我尝试从同一网络中的其他计算机检查它时,它起作用了(192.168.1.18是服务器的 IP)

curl -I http://192.168.1.18:8080

HTTP/1.1 200 OK

但是,当我将路由器配置为打开端口8080并将所有请求转发到192.168.1.18:8080时,我无法再连接到服务器,服务器在请求到达后立即断开连接:

curl -I http://<External IP>:8080

curl: (56) Recv failure: Connection reset by peer

从 PHP 日志中,我看到了这一点

<Client IP>:53799 Accepted
<Client IP>:53799 [200]: HEAD /
<Client IP>:53799 Closing

我尝试在另一台计算机上执行同样的事情(在我的 Mac 上监听端口 8080,让路由器将请求转发到它)并且一切正常,所以我很确定问题不在于路由器 - 我在这个路由器上使用 NAT 已有多年了。

我检查了 ufw,但它说它处于非活动状态

$ ufw status
Status: inactive

还有 iptables

$ iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

tcpdump 捕获的数据包

$ tcpdump port 8080
01:39:24.729154 IP <Client IP>.60626 > ubuntu-22.http: Flags [S], seq 2953074355, win 65535, options [mss 1460,nop,wscale 6,nop,nop,TS val 2461284049 ecr 0,sackOK,eol], length 0
01:39:24.731151 IP <Client IP>.60626 > ubuntu-22.http: Flags [.], ack 3852377597, win 2058, options [nop,nop,TS val 2461284051 ecr 813415924], length 0
01:39:24.731153 IP <Client IP>.60626 > ubuntu-22.http: Flags [P.], seq 0:86, ack 1, win 2058, options [nop,nop,TS val 2461284051 ecr 813415924], length 86: HTTP: GET / HTTP/1.1
01:39:24.731992 IP <Client IP>.60626 > ubuntu-22.http: Flags [R], seq 2953074442, win 0, length 0
01:39:24.836197 IP <Client IP>.60626 > ubuntu-22.http: Flags [P.], seq 0:86, ack 1, win 2058, options [nop,nop,TS val 2461284156 ecr 813415924], length 86: HTTP: GET / HTTP/1.1

你遇到过这种情况吗?或者我在 Ubuntu 上遗漏了什么?谢谢!非常感谢!

答案1

这行不通。

您正在尝试通过 NAT 规则将 LAN 外部的 IP 传输到 LAN 内部的 IP。您要求路由器将流量通过同一接口两次(从公网 IP 传输到您的 nat'd 源端口公网 IP,这是该网络上的唯一接口)。必须在接口之间路由,而不是在“地址”或其他抽象之间路由。此流量将被自动丢弃,因为它永远不会通过 NAT 规则。

简而言之:

  1. 内部->外部 IP - 有效
  2. 内部->外部 IP 通过 NAT 转换为内部 IP - 不行,也永远不会起作用。

撤销你所做的任何花哨操作,恢复 NAT 规则,并正确使用它。仅通过 LAN IP 或环回访问服务器。使用类似 查看远程访问是否可以成功以及您的规则是否正常运行。

相关内容