我的家庭互联网连接有一个静态 IP 地址(例如123.123.123.123
:)
我已将路由器配置为将端口转发至正在运行的9000
内部主机( ) 。192.168.1.101
Ubuntu 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 将启动并锁定您。我的建议(如果您还没有尝试过)是
- 尝试连接到没有 iptables/fail2ban 防火墙的内部机器。
- 一旦你让它工作了——设置iptables
- 一旦你让它工作了 - 设置fail2ban - 如果你觉得你需要在本地网络内进行这种级别的安全