Ubuntu

在linux上接受埠/只能使用本地訪問埠,ip超時

  • September 10, 2020

我已經25565在我的路由器上打開了埠(又名我的世界伺服器埠)。我已經在此伺服器上託管了一個網站:

togtja@togtja_server:/$ sudo iptables -nL | grep 80
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            multiport dports 80,443 /* 'dapp_Apache%20Full' */

在執行伺服器時,我會仔細檢查埠是否正在被監聽:

/**Some other ports as well such as 22 from ssh**/
apache2   1926            root    4u  IPv6  29136      0t0  TCP *:80 (LISTEN)
apache2   1926            root    6u  IPv6  29140      0t0  TCP *:443 (LISTEN)
apache2   1927        www-data    4u  IPv6  29136      0t0  TCP *:80 (LISTEN)
apache2   1927        www-data    6u  IPv6  29140      0t0  TCP *:443 (LISTEN)
apache2   1928        www-data    4u  IPv6  29136      0t0  TCP *:80 (LISTEN)
apache2   1928        www-data    6u  IPv6  29140      0t0  TCP *:443 (LISTEN)
java      3159       togtja      52u  IPv6  41266      0t0  TCP *:25565 (LISTEN)

但是,當我執行telnetnc在埠上時:

togtja@togtja_server:/$ nc -z -v -w5 my_ip 25565
nc: connect to my_ip port 25565 (tcp) timed out: Operation now in progress

如果我嘗試其他應該關閉的埠,我會被直接拒絕

togtja@togtja_server:/$ nc -z -v -w5 my_ip 1337
nc: connect to my_ip port 1337 (tcp) failed: Connection refused

但是,如果我嘗試 localhost 我會通過

togtja@togtja_server:/$ nc -z -v -w5 localhost 25565
Connection to localhost 25565 port [tcp/*] succeeded!

並且它拒絕本地未打開的埠,正如預期的那樣:

togtja@togtja_server:/$ nc -z -v -w5 localhost 1337
nc: connect to localhost port 1337 (tcp) failed: Connection refused

我相信我在設置 Web 伺服器時*可能已經鎖定了所有埠,除了那些明確接受的埠,但不知道這些設置在哪裡,或者這是否是問題所在。*注意:我正在執行 ubuntu 18.04 伺服器(沒有 GUI)。

編輯: 為了澄清,我還在nc my_ip不同網路上的電腦上執行命令,以驗證它不僅可以在本地伺服器上工作

問題是我設法將 IP 表的預設 Pollicy 設置為DROP. 所以打電話時sudo iptables -L,我得到了:

Chain INPUT (policy DROP)
target     prot opt source               destination
Chain FORWARD (policy DROP)
target     prot opt source               destination
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

所以我為我的埠執行添加了一個例外: sudo iptables -A INPUT -p tcp --dport 25565 -j ACCEPT INPUT,可能是FORWARDOUTPUT取決於你想要為什麼制定規則。

要將整個錶鍊更改為一個策略,您可以這樣做: sudo iptables -P INPUT ACCEPT,這將使 INPUT 的預設策略被接受

引用自:https://unix.stackexchange.com/questions/608622