You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置iptables仅允许特定IP访问SSH后无法建立连接的问题求助

配置iptables仅允许特定IP访问SSH后无法建立连接的问题求助

嘿,我来帮你捋捋这个问题!之前能正常连接,改了iptables规则后就超时,大概率是规则配置的细节出了问题。先看看你贴出来的规则,我注意到其中一条SSH相关的规则明显被截断了,先从几个关键点排查:

一、先确认基础信息是否正确

  • 你的主机IP真的是192.168.178.45吗?
    如果你的主机用的是DHCP自动获取IP,地址可能会悄悄变动。赶紧在主机上执行ip addr(Linux/macOS)或者ipconfig(Windows)确认当前IP,要是和iptables里写的不一样,规则自然匹配不上,直接导致连接超时。
  • 规则是否正确加载生效?
    修改/etc/iptables/rules.v4后,你需要手动重新加载规则才能生效:
    iptables-restore < /etc/iptables/rules.v4
    
    然后用iptables -L -v -n查看当前生效的规则列表,确认那条允许特定IP访问SSH的规则是否完整存在。

二、修正截断的SSH规则

你贴的INPUT链里的SSH规则末尾是NEW,EST>,这明显不完整,应该是NEW,ESTABLISHED?不过其实对于新的SSH连接请求,只需要匹配NEW状态就够了——因为前面已经有-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT来允许已建立连接的后续流量。所以这条规则应该修正为:

-A INPUT -s 192.168.178.45/32 -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT

三、检查规则顺序与OUTPUT链配置

  • 从你贴的规则顺序来看,INPUT链的规则顺序是对的:先允许回环接口、再允许已建立的连接、然后是ICMP,最后才是SSH规则,不会出现前面的规则提前拦截的情况。
  • 你的OUTPUT链默认是DROP,但已经配置了-A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT,这条规则会允许Kali给主机返回SSH握手的响应包,理论上是没问题的。不过可以再确认下,有没有其他规则影响了SSH的响应流量。

四、用抓包工具定位问题

如果上面的步骤都没问题,可以在Kali上用tcpdump抓包,看看是否收到了主机发过来的SSH连接请求:

tcpdump -i any port 22
  • 如果能抓到主机的SSH包,但连接还是超时,说明iptables没有正确放行这个包,需要再检查规则;
  • 如果抓不到包,那可能是网络层面的问题,比如虚拟机的网络模式配置(比如NAT模式的端口转发是否正常?不过你之前能连,这个概率不大),或者主机和虚拟机不在同一个网段。

五、临时验证是否是iptables的问题

你可以临时把INPUT链的默认策略改成ACCEPT,测试能不能正常连接:

iptables -P INPUT ACCEPT

如果这时候能连上,那百分百是iptables规则的问题,再回到前面的步骤仔细调试;如果还是连不上,那就要排查网络本身的问题了。

备注:内容来源于stack exchange,提问作者tasstra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:29:33