Как удалить несколько строк из IPTABLES

387
Bastian Nanchen

Есть ли способ удалить несколько строк, iptablesне зная, что в моем iptables?

Например, я хочу удалить каждую переадресацию портов с порта 80, а вот iptables:

Chain PREROUTING (policy ACCEPT) target prot opt source destination  REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 8080 REDIRECT tcp -- anywhere anywhere tcp dpt:https redir ports 8443 

Есть ли способ удалить эти две строки в одной команде?

0

1 ответ на вопрос

0
Bastian Nanchen

Вот рабочий скрипт:

 iptables -t nat --list-rules PREROUTING | while IFS='' read -r line || [[ -n "$line" ]]; do RULE443=$(echo $line | grep "REDIRECT --to-ports 8443") RULE80=$(echo $line | grep "REDIRECT --to-ports 8080") if [ "$RULE80" != '' ] then PORT80=$(echo $RULE80 | grep -o '\-\-dport.*' | cut -d' ' -f2) iptables -t nat -D PREROUTING -p tcp --dport $PORT80 -j REDIRECT --to-port 8080 elif [ "$RULE443" != '' ] then PORT443=$(echo $RULE443 | grep -o '\-\-dport.*' | cut -d' ' -f2) iptables -t nat -D PREROUTING -p tcp --dport $PORT443 -j REDIRECT --to-port 8443 fi done