linux:如何排除转发端口故障?

linux:如何排除转发端口故障?

我的家庭互联网连接有一个静态 IP 地址(例如123.123.123.123:)

我已将路由器配置为将端口转发至正在运行的9000内部主机( ) 。192.168.1.101Ubuntu 14-04

在此处输入图片描述

我运行并netcat监听 9000 端口:

$ nc -l 9000

从我的 LAN 内部连接:

在我的局域网上的另一台机器上我可以 telnet 到该端口:

$ telnet 192.168.1.101 9000
Trying 192.168.1.101...
Connected to 192.168.1.101.
Escape character is '^]'.
hello world

连接成功

$ nc -l 9000
hello world

从我的 LAN 外部进行连接:

但是,如果我尝试通过我的外部 IP 地址连接,则无法通过:

$ telnet 123.213.123.123 9000
Trying 123.213.123.123...

防火墙问题?

我尝试在 iptables 上允许端口 9000(我顺便说一下,专家iptables!):

$ sudo iptables -I INPUT 1 -p tcp --dport 9000 -j ACCEPT

这是我最终的配置:

$ sudo iptables -L -n -v
Chain INPUT (policy ACCEPT 203 packets, 16977 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:9000

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 178 packets, 23749 bytes)
 pkts bytes target     prot opt in     out     source               destination         

telnet还是打不通。

我认为iptables无论如何该配置可能是不必要的,因为ufw status它处于非活动状态:

$ sudo ufw status
Status: inactive

端口扫描表明它是开放的:

如果我运行端口扫描器在我的外部 IP 上nc -l 9000运行时,它显示端口已打开。

在此处输入图片描述

如果我运行,tcpdump当我尝试端口 9000 时,看不到任何内容进入telnet。但是,运行端口扫描器确实会显示:

18:41:34.023692 IP 198.199.98.246.49977 > my_host.9000: Flags [S], seq 3955039481, win 14600, options [mss 1400,sackOK,TS val 4051434607 ecr 0,nop,wscale 8], length 0
18:41:34.023748 IP my_host.9000 > 198.199.98.246.49977: Flags [S.], seq 3541700333, ack 3955039482, win 28960, options [mss 1460,sackOK,TS val 465840988 ecr 4051434607,nop,wscale 7], length 0
18:41:34.250110 IP 198.199.98.246.49977 > my_host.9000: Flags [.], ack 1, win 58, options [nop,nop,TS val 4051434663 ecr 465840988], length 0
18:41:34.250973 IP 198.199.98.246.49977 > my_host.9000: Flags [F.], seq 1, ack 1, win 58, options [nop,nop,TS val 4051434664 ecr 465840988], length 0
18:41:34.251035 IP my_host.9000 > 198.199.98.246.49977: Flags [F.], seq 1, ack 2, win 227, options [nop,nop,TS val 465841045 ecr 4051434664], length 0
18:41:34.477197 IP 198.199.98.246.49977 > my_host.9000: Flags [.], ack 2, win 58, options [nop,nop,TS val 4051434720 ecr 465841045], length 0

问题:

我有点不知道问题出在哪里。

  • 我该如何诊断问题出在哪里?
  • 为什么端口扫描数据可以传过来,而我的 telnet 却传不过来?
  • 我如何允许传入连接?

答案1

您可以通过直接插入 WAN 端口并播放 ISP 来查看(确切)发生了什么来诊断问题。这可能需要一些工作,并且很可能需要静态 IP 寻址,但它会告诉您您的 ISP 是否在干扰您。

相关内容