Iptables

未連接 PPTP 時,eth0 未偵聽埠 80

  • March 3, 2021

我在我的雲伺服器上使用 Ubuntu LTS 20.04。

在我對一些與網路相關的配置進行一些修改之前,一切都執行良好。

我的伺服器上執行著一個 PPTP VPN 伺服器。

現在我有以下問題:我的 nginx 伺服器應該在所有介面上偵聽埠 80。但事實並非如此。

當我在伺服器中捲曲公共 IP 時,它可以工作。

curl {my.public.ip}:80 -I  --interface eth0

但是當我從另一台遠端電腦執行 curl 時,它不會。

curl {my.public.ip}:80 -I

然後我從筆記型電腦連接到我的 PPTP 伺服器。

令人驚訝的是, curl {my.public.ip}:80 -I 現在似乎可以在任何電腦上工作。(我執行 curl 的電腦是否連接到 VPN 無關緊要)。但是當我斷開筆記型電腦與 VPN 的連接時,eth0 的 80 埠再次關閉。

但是這個問題不會影響任何其他埠(443、22、21、81、3306 似乎工作正常)

這是我輸入的最新命令(我認為其中一個會影響導致上述問題,但我不確定)

service pptpd restart
sysctl -p
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A INPUT -p 47 -j ACCEPT
iptables -I INPUT -p gre -j ACCEPT
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -s 10.0.0.0/24 -j TCPMSS  --clamp-mss-to-pmtu
iptables -A FORWARD -s 10.0.0.0/24 -d 10.0.0.0/24 -j ACCEPT

現在我不能讓我的筆記型電腦進入睡眠狀態,因為我的網路伺服器將停止監聽 eth0,埠 80…

發現了問題。

現在我只執行以下命令,它執行順利。

service pptpd restart
iptables -I INPUT -p gre -j ACCEPT
iptables -A FORWARD -s 10.0.0.0/24 -d 10.0.0.0/24 -j ACCEPT

嘗試將 nginx vhost 配置為在沒有埠 80 的情況下偵聽伺服器的 IP 地址,而不是在所有介面上。我的意思是,而不是使用:

listen 80;

在 nginx 中,嘗試使用:

listen server-ip 80;

這樣,您的 nginx 伺服器僅將埠 80 綁定到該特定 IP 地址,而不是在所有介面上。

引用自:https://serverfault.com/questions/1055355