我有三个虚拟机。
1)作为具有两个接口的路由器的虚拟机VM-A :
eth0 – 10.160.10.254
eth1 – 172.10.0.254
2)作为内部networking的虚拟机VM-B ,具有一个接口:
eth0 – 10.160.10.1(和gw到10.160.10.254)
3)作为外部networking的虚拟机VM-C ,具有一个接口:
eth0 172.10.0.1(和gw到172.10.0.254)
我想要允许ssh连接到路由器(VM-1)时发起的内部networking与iptables的服务器。
所以在路由器的vbox中,使用下面的这两个命令:
iptables -A INPUT -s 10.160.10.4 -d 10.160.10.254 -p udp --dport 22 -j ACCEPT iptables -A INPUT -s 10.160.10.4 -d 10.160.10.254 -p tcp--dport 22 -j ACCEPT
testing这是否正在工作我试图使用netcat。
在内部networking机器中使用nc -lu 22
命令,而在外部networking机器中使用nc -u 193.160.10.4 22
命令,但没有任何内容出现。
你知道什么需要出现,以及如何正确使用netcat来testingiptables规则吗?
SSH使用TCP,而不是UDP。 你使用nc -u来发送UDP数据包。 你试一试
nc -vz <ip> <port>
如果你想以这种方式testing你的iptables规则,你应该把INPUT链的策略设置为DROP或REJECT。 请注意,您之前允许tcp数据包到端口22。 您可以从特定机器的IP,整个子网或接口来允许它。
示例源ip:
iptables -A INPUT -s <source ip> -p tcp --dport 22 -j ACCEPT
示例源子网(接受来自192.168.xxx.xxx的所有内容):
iptables -A INPUT -s 192.168.0.0/16 -p tcp --dport 22 -j ACCEPT
示例源接口(接受每个通过接口eth0的数据包):
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
将INPUT策略设置为DROP(如果不适用任何规则,则为默认操作):
iptables -P INPUT DROP
最好的祝福
编辑:当然,大卫说,但即时通讯假设在这个问题上的一些错别字,否则不会有任何工作连接。
有2个部分给你的问题:
第1部分 – networkingconfiguration
首先是你正在使用3个子网。 我假设你把它们全部用作/ 24:10.160.10.0/24,172.10.0.0/24和192.168.10.0/24
VM-Aconfiguration为10.160.10.0/24和172.10.0.0/24。
VM-Bconfiguration为192.168.10.0/24
VM-Cconfiguration为172.10.0.0/24。
使用此IP地址configuration,VM-B无法看到 VM-A或VM-B。 您需要将192.168.10.0/24子网添加到VM-A(您的路由器),或将VM-B上的子网更改为10.160.10.0/24或172.10.0.0/24子网。 也就是说,您不能将您的网关设置为与您在主机上设置IP地址的完全不同的子网。 主机IP地址和网关IP地址必须位于同一个子网内。
你也应该知道172.10.0.0/24不是一个私有子网。 私有 172的范围是172.16.0.0/12,它是IP地址:172.16.0.0 – 172.31.255.255 [1]
第2部分 – 防火墙configuration
iptables -A INPUT -s 10.160.10.4 -d 10.160.10.254 -p udp -dport 22 -j ACCEPT
源IP应该是10.160.10.1
10.160.10.4主机从哪里来的? 否则@Knorke在iptablesconfiguration上有很好的处理。