如何使用 iptables 仅允许内部网络访问特定的 UDP 端口

如何使用 iptables 仅允许内部网络访问特定的 UDP 端口

我只想允许 Asterisk 访问(UDP 端口 5060)内部网络(192.168.3.0/24 和 192.168.4.0/24),而不允许外部访问。

我的 iptables 的相关部分是:

 iptables -F
 iptables -t nat -F
 iptables -A INPUT -p udp -j ACCEPT
 iptables -P INPUT DROP


 iptables -I INPUT -p udp ! -s 192.168.3.0/24 --dport 5060 -j REJECT
 iptables -I INPUT -p udp ! -s 192.168.4.0/24 --dport 5060 -j REJECT
 iptables -I INPUT -p udp  -s 192.168.3.0/24 --dport 5060 -j ACCEPT
 iptables -I INPUT -p udp  -s 192.168.4.0/24 --dport 5060 -j ACCEPT

这不起作用。

我使用 NAT 是为了不同的目的。

答案1

您正在展示插入的序列iptables

iptables -I INPUT -p udp ! -s 192.168.3.0/24 --dport 5060 -j REJECT
iptables -I INPUT -p udp ! -s 192.168.4.0/24 --dport 5060 -j REJECT
iptables -I INPUT -p udp  -s 192.168.5.0/24 --dport 5060 -j ACCEPT
iptables -I INPUT -p udp  -s 192.168.1.0/24 --dport 5060 -j ACCEPT

由于这些都是作为第一条规则插入的,因此顺序实际上是颠倒的:

-A INPUT -p udp  -s 192.168.1.0/24 --dport 5060 -j ACCEPT
-A INPUT -p udp  -s 192.168.5.0/24 --dport 5060 -j ACCEPT
-A INPUT -p udp ! -s 192.168.4.0/24 --dport 5060 -j REJECT
-A INPUT -p udp ! -s 192.168.3.0/24 --dport 5060 -j REJECT

这意味着来自的流量192.168.3.0将被第三条规则拒绝,而不会到达第四条规则。

您的问题说的是内部网络192.168.3.0/24192.168.4.0/24因此不清楚您为什么接受192.168.1.0/24192.168.5.0/24。尽管如此,您应该编写规则以接受本地子网并拒绝其他所有内容,例如

-A INPUT -p udp -s 192.168.3.0/24 --dport 5060 -j ACCEPT
-A INPUT -p udp -s 192.168.4.0/24 --dport 5060 -j ACCEPT
-A INPUT -p udp --dport 5060 -j DROP

相关内容