Por que você repete todos esses critérios de filtro na linha --mark 99
? você marca um pacote, é isso. Se aparecerem mais critérios, você deve alterar a marcação, mas não verificar mais do que a marca. BTW, o nome da corrente internet
parece bastante suboptimal para mim.
#!/bin/bash
if iptables -L apache -n &>/dev/null; then
iptables -t mangle -F apache
else
iptables -t mangle -N apache
fi
iptables -t mangle -A apache -j MARK --set-mark 99
# finish the handling of this packet in this table
iptables -t mangle -A apache -j ACCEPT
if iptables -L squid -n &>/dev/null; then
iptables -t mangle -F squid
else
iptables -t mangle -N squid
fi
iptables -t mangle -A squid -j MARK --set-mark 98
# finish the handling of this packet in this table
iptables -t mangle -A squid -j ACCEPT
if iptables -L proxy_mac_check -n &>/dev/null; then
iptables -t mangle -F proxy_mac_check
else
iptables -t mangle -N proxy_mac_check
fi
for MAC_ADDRES in 11:22:33:44:55:66 11:22:33:44:55:67; do
iptables -t mangle -A proxy_mac_check -m mac --mac-source $MAC_ADDRES -j squid
done
iptables -t mangle -A proxy_mac_check -j apache
iptables -t mangle -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j proxy_mac_check
iptables -t nat -A PREROUTING -m mark --mark 99 -j DNAT --to-destination $BOX_IP
iptables -t nat -A PREROUTING -m mark --mark 98 -j DNAT --to-destination $BOX_IP:3128