Сори, но я запутался. Опишите еще раз, только с конкретными адресами, кто (ip), куда (ip), через кого (ip, vpn или без) соединяется.
Несколько советов по правилам.
>-A OUTPUT -s 127.0.0.1 -j ACCEPT
>-A OUTPUT -s 10.10.0.4 -j ACCEPT
>-A OUTPUT -s 172.16.0.2 -j ACCEPT
Зачем? Ведь :OUTPUT ACCEPT.
>-A INPUT -s 127.0.0.1 -i lo -j ACCEPT
>-A INPUT -s 10.10.0.4 -i lo -j ACCEPT
>-A INPUT -s 192.168.0.4 -i lo -j ACCEPT
>-A INPUT -s 172.16.0.2 -i lo -j ACCEPT
Можно просто написать
-A INPUT -i lo -j ACCEPT
>-A tcp_packets -s 192.168.0.0/255.255.0.0 -p tcp -m tcp --dport 22 -j allowed
>-A tcp_packets -s 192.168.0.0/255.255.0.0 -p tcp -m tcp --dport 47 -j allowed
>-A tcp_packets -s 192.168.0.0/255.255.0.0 -p tcp -m tcp --dport 80 -j allowed
>-A tcp_packets -s 192.168.0.0/255.255.0.0 -p tcp -m tcp --dport 443 -j allowed
>-A tcp_packets -s 192.168.0.0/255.255.0.0 -p tcp -m tcp --dport 1723 -j allowed
А что такое -m tcp?
--dport 47 Это зачем? 47 - протокол GRE, а не порт tcp.
Пишем одной строкой
-A tcp_packets -s 192.168.0.0/255.255.0.0 -p tcp -m multiport --dport 22,80,443,1723 -j allowed
Лучше проверяйте действующие правила через iptables -nvL.