Способ обработки правил iptables следующий: :захватить пакет и попытаться сопоставить его с набором правил, сверху вниз. Если правило совпадает, выполнить его и остановить дальнейшую обработку (, за исключением особых случаев, например, когда целью является другая цепочка, LOG, RETURN и т. д. ).
Каждая цепочка также имеет политику ПО УМОЛЧАНИЮ (ее ПРИНЯТЬ по умолчанию ), что происходит с пакетом, который не соответствует ни одному правилу.
Теперь, если у вас есть два таких правила:
iptables -A INPUT -p tcp ! -s 182.3.3.1 --dport 2222 -j REJECT
iptables -A INPUT -p tcp ! -s 202.4.5.6 --dport 2222 -j REJECT
Если вы получаете доступ с IP-адреса 182.3.3.1, первое правило соответствует и применяется (без каких-либо действий, и правило обрабатывается цепочкой DEFAULT Policy, которая, я считаю, ACCEPT ). Во втором случае, если IP-адрес 202.4.5.6, первое правило также соответствует и применяется (путем отказа в доступе ).
Возможно, вам нужно нечто подобное (не вводите эти правила в своей системе, иначе вы заблокируете себя!):
iptables -P DROP INPUT # Changes the INPUT Chain default policy to DROP
iptables -A INPUT -p tcp -s 182.3.3.1 --dport 2222 -j ACCEPT # Allows the access of IP 182.3.3.1
iptables -A INPUT -p tcp -s 202.4.5.6 --dport 2222 -j ACCEPT # Allows the access of IP 202.4.5.6
Имейте в виду, что при использовании этих правил вам потребуется обновить свой набор правил, чтобы разрешить доступ к другим службам (, например разрешить себе доступ к SSH и другим службам на сервере, поэтому рекомендуется не блокировать себя на сервере. ).
Это распространенная проблема рендеринга в Java-приложениях и оконных менеджерах, -не переназначающих родителя. Есть 2 решения:
$ wmname LG3D
export _JAVA_AWT_WM_NONREPARENTING=1