我想通过 SSH 访问192.168.1.15我的机器上的服务器,我的IP是192.168.1.99。
源目的地为 UP,有 IP192.168.1.15。
这是一个 LAN,有 30 台机器连接到网络并且工作正常,我在本地机器上玩,因为我需要在生产 VPS 中应用相同的规则。
我在我的机器 192.168.1.99 中应用了以下 iptables。现在,在应用下面的链时,我无法从外部接收任何数据包,也无法向外部发送任何数据包
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
在上面的链之后,我添加了以下规则,它希望允许 ssh 从机器到192.168.1.15访问192.164.1.15但我仍然无法访问192.168.1.15。
iptables -A INPUT -p tcp -i eth0 --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -o eth0 --sport 22 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
请大家检查一下我的规则是否正确。我仍然无法访问机器 15。
答案1
您的规则看起来正确但涵盖服务 ssh 和使用 ssh 客户端。
除非您需要那么精细,否则不必指定接口。
ICMP 消息被阻止,这可能会导致连接无法工作。
环回流量也会被丢弃,这可能会产生一些意想不到的后果。
客户规则
iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -p icmp -j ACCEPT iptables -A OUTPUT -p icmp -j ACCEPT iptables -A INPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
服务器规则
iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -p icmp -j ACCEPT iptables -A OUTPUT -p icmp -j ACCEPT iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
tcpdump
在测试时,您可以通过运行一段时间尝试连接来监视客户端上正在生成并出现在服务器上的流量。这可以帮助您缩小问题所在或正在发生的情况。
client$ tcpdump -ni eth0 host 192.168.1.15
server$ tcpdump -ni eth0 host 192.168.1.99