Как удалить несколько строк из IPTABLES - PullRequest
0 голосов
/ 18 октября 2018

Есть ли способ удалить несколько строк в 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

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

1 Ответ

0 голосов
/ 19 октября 2018

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

 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
...