如何将bash循环与不同的变量结合起来

时间:2015-03-12 07:25:37

标签: bash scripting router cycle iptables

我有两个网络:

FORWARDS="10.0.0.0/8 192.168.0.0/16"

在周期I中,允许来自同一网络的tcp udp icmp到同一

for ipo in $FORWARDS;do
    iptables -A FORWARD -p tcp -s $ipo -d $ipo -j ACCEPT
    iptables -A FORWARD -p udp -s $ipo -d $ipo -j ACCEPT
    iptables -A FORWARD -p icmp -s $ipo -d $ipo -j ACCEPT
done

但是我需要允许相同的网络从一个到另一个,如何在周期中添加iptables规则以减少行数:

iptables -A FORWARD -p tcp -s 10.0.0.0/8 -d 192.168.0.0/16 -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.0.0/16 -d 10.0.0.0/8 -j ACCEPT
iptables -A FORWARD -p udp -s 10.0.0.0/8 -d 192.168.0.0/16 -j ACCEPT
iptables -A FORWARD -p udp -s 192.168.0.0/16 -d 10.0.0.0/8 -j ACCEPT
iptables -A FORWARD -p icmp -s 10.0.0.0/8 -d 192.168.0.0/16 -j ACCEPT
iptables -A FORWARD -p icmp -s 192.168.0.0/16 -d 10.0.0.0/8 -j ACCEPT

1 个答案:

答案 0 :(得分:0)

使用嵌套循环:

for ipo1 in $FORWARDS; do
    for ip2 in $FORWARD; do
        iptables -A FORWARD -p tcp -s $ipo1 -d $ipo2 -j ACCEPT
        iptables -A FORWARD -p udp -s $ipo1 -d $ipo2 -j ACCEPT
        iptables -A FORWARD -p icmp -s $ipo1 -d $ipo2 -j ACCEPT
    done
done