Недавно освоил ipset, чудесная штука, но вот проблема (без проблем жизнь была бы скучной.)
в iptables есть несколько правил использующие ipset:
t: mangle
-A INPUT -p tcp -m tcp -m set --set accessnet src,src -j ACCEPT
-A INPUT -p tcp -m tcp -m set --set accesshosts src,src -j ACCEPT
-A INPUT -p tcp -m tcp -j DROP
-A POSTROUTING -m set --set ! pipefree dst,dst -j MARK --set-mark 0x100
-A POSTROUTING -j MARK --or-mark 0xef
вводил с командной строки.
теперь делает iptables-save и получаем такую фигню:
-A INPUT -p tcp -m tcp -m set --set accessnet src,src -j ACCEPT
-A INPUT -p tcp -m tcp -m set --set accesshosts src,src -j ACCEPT
-A INPUT -p tcp -m tcp -j DROP
-A POSTROUTING -m set ! --set pipefree dst,dst -j MARK --set-mark 0x100
-A POSTROUTING -j MARK --or-mark 0xef
обратите внимание сюда:
-A POSTROUTING -m set !--set pipefree dst,dst -j MARK --set-mark 0x100
"!" стоит перед --set, если это дело сохранить в файл и потом загрузить (iptables-restore) назад, то получаю ошибку:
Bad argument `!--set'
Error occurred at line: 18
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
это у меня баг или у ipset, как это решать?