我只想允许 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/24
,192.168.4.0/24
因此不清楚您为什么接受192.168.1.0/24
和192.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