如何通过转发端口允许 WAN 连接?

如何通过转发端口允许 WAN 连接?

我的家庭互联网连接有一个静态 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

您是否有任何理由在内部网络内(在硬件防火墙后面)运行 iptables 防火墙和 fail2ban?
根据我的经验,它们的设置和诊断相当棘手。尤其是当您运行 fail2ban 时,其明确目的是让您尝试做的事情变得困难。
例如,如果您尝试连接到您的机器失败了一定次数,fail2ban 将启动并锁定您。我的建议(如果您还没有尝试过)是

  1. 尝试连接到没有 iptables/fail2ban 防火墙的内部机器。
  2. 一旦你让它工作了——设置iptables
  3. 一旦你让它工作了 - 设置fail2ban - 如果你觉得你需要在本地网络内进行这种级别的安全

相关内容