我正在 SonicWall NSA 220 路由器上为端口 22 设置端口转发。路由器似乎正在按要求转发 TCP 数据包。但是,服务器上运行的 Wireshark 显示我的服务器的 sshd 忽略了这些 ssh 连接请求并且没有响应:它甚至没有尝试发回任何数据包。
我可以通过同一个以太网接口(从 LAN 上的另一个系统)直接 ssh 到服务器,一切顺利。只有从 WAN 端转发的数据包没有收到任何响应。
因此看起来罪魁祸首可能是 sshd:由于某种原因,它忽略了转发的数据包。
服务器正在运行 RHEL 6。防火墙已禁用。
知道为什么 sshd 会忽略转发的连接请求吗?还是路由器出了问题?
以下是 tcpdump 的输出(我这里使用的是端口 30002,但它与端口 22 相同)。服务器的 IP 地址是 192.168.8.33。
08:52:12.350492 IP 192.168.1.32.52205 > 192.168.8.33.30002: Flags [S], seq 2460054041, win 14600, options [mss 1460,sackOK,TS val 453857378 ecr 0,nop,wscale 6], length 0
08:52:13.347513 IP 192.168.1.32.52205 > 192.168.8.33.30002: Flags [S], seq 2460054041, win 14600, options [mss 1460,sackOK,TS val 453857628 ecr 0,nop,wscale 6], length 0
08:52:15.351529 IP 192.168.1.32.52205 > 192.168.8.33.30002: Flags [S], seq 2460054041, win 14600, options [mss 1460,sackOK,TS val 453858129 ecr 0,nop,wscale 6], length 0
08:52:19.363565 IP 192.168.1.32.52205 > 192.168.8.33.30002: Flags [S], seq 2460054041, win 14600, options [mss 1460,sackOK,TS val 453859132 ecr 0,nop,wscale 6], length 0
下面是我从 LAN 进行 ssh 时的 tcpdump 输出,成功了:
08:50:41.844945 IP 192.168.8.253.55442 > 192.168.8.33.30002: Flags [S], seq 2514711830, win 14600, options [mss 1460,sackOK,TS val 4294948065 ecr 0,nop,wscale 6], length 0
08:50:41.844983 IP 192.168.8.33.30002 > 192.168.8.253.55442: Flags [S.], seq 2291827547, ack 2514711831, win 14480, options [mss 1460,sackOK,TS val 6807100 ecr 4294948065,nop,wscale 7], length 0
08:50:41.845290 IP 192.168.8.253.55442 > 192.168.8.33.30002: Flags [.], ack 1, win 229, options [nop,nop,TS val 4294948065 ecr 6807100], length 0
etc....
以下是服务器上的 sshd_config:
sudo grep ^[^'#'] /etc/ssh/sshd_config
Port 22
Port 30002
Protocol 2
SyslogFacility AUTHPRIV
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
X11Forwarding yes
Subsystem sftp /usr/libexec/openssh/sftp-server
这是 iptables:
sudo iptables -L -n -v
Chain INPUT (policy ACCEPT 5350 packets, 314K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 2121 packets, 14M bytes)
pkts bytes target prot opt in out source destination
答案1
我终于让它工作了。我忘了我的服务器有两个网络接口,并且都已连接:一个连接到路由器的 LAN 网络,一个连接到 WAN 网络。
解释一下:路由器的WAN是192.168.8.*。路由器的LAN是192.168.1.*。服务器是192.168.8.32,客户端是192.168.1.33。
当我将服务器与路由器的 WAN 网络断开连接时,突然一切正常。我认为服务器上的 RHEL 一定对到客户端 192.168.1.33 的两条路由感到困惑。