温馨提示×

linux的iptables怎样基于网络接口设置

小樊
81
2024-12-28 16:41:06
栏目: 智能运维

在Linux中,您可以使用iptables根据网络接口设置规则

  1. 首先,您需要确定要使用的网络接口名称。您可以使用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是我们要使用的网络接口。

  1. 现在,您可以使用iptables命令为特定网络接口设置规则。例如,如果您想要阻止所有传入的SSH连接(端口22),但仅针对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表示丢弃数据包。

  1. 如果您想要允许特定IP地址通过SSH连接,您可以使用以下命令:
$ 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的数据包。

  1. 您可以使用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

0