在Linux中,您可以使用iptables根据网络接口设置规则
ip addr命令查看系统中的所有网络接口。例如:$ ip addr
这将显示类似于以下内容的输出:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.2/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::211:22ff:fe33:4455/64 scope link
valid_lft forever preferred_lft forever
在这个例子中,eth0是我们要使用的网络接口。
eth0接口,您可以使用以下命令:$ sudo iptables -A INPUT -p tcp --dport 22 -i eth0 -j DROP
这里,-A INPUT表示将规则添加到INPUT链,-p tcp表示协议为TCP,--dport 22表示目标端口为22(SSH),-i eth0表示仅针对eth0接口,-j DROP表示丢弃数据包。
$ sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -i eth0 -j ACCEPT
这里,-s 192.168.1.100表示允许源IP地址为192.168.1.100的数据包。
iptables -L命令查看当前所有的iptables规则。这将显示类似于以下内容的输出:Chain INPUT (policy ACCEPT)
pkts bytes target prot opt in out source destination
100 7000 DROP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
100 7000 ACCEPT tcp -- * * 192.168.1.100 0.0.0.0/0 tcp dpt:22
在这个例子中,您可以看到我们为eth0接口设置了一个阻止SSH连接的规则,但允许源IP地址为192.168.1.100的数据包通过。
请注意,这些规则在系统重启后将丢失。要使规则在重启后保持生效,您可以将它们保存到一个文件中,然后使用iptables-restore命令恢复它们。例如,您可以将上面的规则保存到名为/etc/iptables/rules.v4的文件中,然后使用以下命令恢复它们:
$ sudo iptables-restore < /etc/iptables/rules.v4