Я думаю, что я правильно понял faq i2p, и это, кажется, работает (добавила формулировку из faq, затем правила, по порядку и изменила свой уникальный номер порта на PORT):
# Outbound UDP from the random port noted on the configuration page
# to arbitrary remote UDP ports, allowing replies
-A OUTPUT -p udp --sport PORT -j ACCEPT
# Outbound TCP from random high ports to arbitrary remote TCP ports
-A OUTPUT -p tcp --sport 9000:31000 -j ACCEPT
# Inbound UDP to the port noted on configuration page from arbitrary locations
-A INPUT -p udp --dport PORT -j ACCEPT
# Inbound TCP to the port noted on configuration page from arbitrary locations
-A INPUT -p tcp --dport PORT -j ACCEPT
# Outbound UDP on port 123, allowing replies
-A OUTPUT -p udp --sport 123 -j ACCEPT
Но так как у меня есть пользователь i2p и все, возможно, это будет лучше?
-A INPUT -j ACCEPT -m owner --uid-owner i2p
-A OUTPUT -j ACCEPT -m owner --uid-owner i2p
Является ли первое более безопасным, потому что оно не позволяет пользователю свободно проходить через брандмауэр, как ему нравится? Или последний более безопасен, потому что только порты, используемые пользователем, будут открыты в любой момент?
Кроме того, я предполагаю, что NEW, ESTABLISHED, RELATED состояния для всех, но, возможно, некоторые должны быть просто ESTABLISHED или что-то, как правило для исходящих для tcp в диапазоне портов 9000-31000?