在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