Назад | Перейти на главную страницу

Будут ли правила iptables работать, если интерфейс был удален и создан заново?

Мой сервер подключается к каким-то странным ресурсам через OpenVPN, и каждый раз, когда клиент OpenVPN запускается, ovpn интерфейс поднят.

Я хочу предоставить этому интерфейсу только выбранные порты (скажем, MySQL), поэтому у меня есть это правило в моих iptables:

iptables -A INPUT -i ovpn -p tcp --dport 3306 -j ACCEPT

Однако, поскольку клиент OpenVPN может отключаться и повторно подключаться без вмешательства, идентификатор ссылки (как показано ip link show ovpn) может измениться.

Будет ли указанное выше правило iptables работать после того, как ссылка исчезнет и появится снова (с другим идентификатором)?

Да, он продолжит работать, потому что iptables не использует индекс интерфейса, но выполняет сравнение строки с именем текущего интерфейса при оценке -i/--in-interface параметр. На самом деле это кажется всегда оценивается, даже если параметр не указан, но встроенная функция вполне оптимизирован.

Напротив, столы (нынешний кандидат, преемник iptables) предлагает два разных выражения: iifname: прямой эквивалент -i, сравнивая текущее имя, и iif сравнение индекса интерфейса, что может вызвать проблемы в вашем случае использования. когда iptables переводится на столы (либо используя iptables-translate или iptables-nft для нового API iptables-over-kernel-nftables), -i переводится на iifname как и ожидалось для совместимости.

Да, это будет. Правила не удаляются при удалении указанного интерфейса.

Более того, существуют групповые правила, например, вы можете указать «любой интерфейс pppX» с соответствием -i ppp+ или -o ppp+. Интерфейса с таким именем нет вообще, поэтому он ни на что не ссылается. Но если будет трафик, связанный с интерфейсом ppp2, то такое правило будет немедленно применяться.

В общем, не важно, было ли правило создано до появления интерфейса или после него.