Linux - iptables 只允许 3 个 IP

Linux - iptables 只允许 3 个 IP

我正在使用 linux mint,我想阻止端口 5210 上的所有传入连接(3 个 IP 除外)。我搜索并浏览了很多线程,只发现只允许 LAN IP 范围的结果,并且找不到与允许恰好 3 个不在 LAN 中的不同 IP 相关的任何内容。

我应该怎么做或者我应该搜索什么?

答案1

允许三个,拒绝/放弃其余的。从命令行iptables

iptables -A INPUT -p tcp --dport 5210 --source "$addr1" -j ACCEPT
iptables -A INPUT -p tcp --dport 5210 --source "$addr2" -j ACCEPT
iptables -A INPUT -p tcp --dport 5210 --source "$addr3" -j ACCEPT
iptables -A INPUT -p tcp --dport 5210 -j REJECT

例如,addr2第一条规则不匹配,并且被忽略,而第二条规则匹配并接受数据包。

或者,创建一个对三个地址不执行任何操作并拒绝其余地址的链,然后在上层接受或进行任何进一步处理:

iptables -N p5210
iptables -A p5210 --source "$addr1" -j RETURN
iptables -A p5210 --source "$addr2" -j RETURN
iptables -A p5210 --source "$addr3" -j RETURN
iptables -A p5210 -j REJECT

iptables -A INPUT -p tcp --dport 5210 -j p5210
# add whatever further limitations you want
iptables -A INPUT -p tcp --dport 5210 -j ACCEPT 

当然,将地址放入变量中并使用循环为所有地址运行相同的命令也是一种选择:

#!/bin/bash
allowed_addresses=(1.2.3.4 4.5.6.7 7.8.9.0)
for addr in "${allowed_addresses[@]}" ; do 
    iptables -A INPUT -p tcp --dport 5210 --source "$addr" -j ACCEPT
done

相关内容