Извините за мой английский.
У меня проблемы с пониманием того, следует ли открывать порты через ввод, вывод или и то, и другое.
Например, возьмем базовый HTTP-порт 80. Для настройки стандартного клиента. Если я хочу, чтобы он имел доступ к Интернету, я думаю, что я должен открыть порт 80 в INPUT AND OUTPUT на клиенте. Это правильно? Вот почему я думаю, что:
То же самое относится и к серверу: он получит запрос на порт 80 и отправит ответ на порт 80, поэтому HTTP-сервер должен иметь порт 80, открытый для INPUT и OUPUT.
Я это хорошо понимаю?
Трафик обычно не возвращается на тот же порт, на который он уходит.
Когда клиент генерирует запрос, например для веб-страницы, порт источника генерируется случайным образом. Ваш исходящий трафик может выглядеть так Source:50000 Destination:80
, а для обратного трафика числа будут перевернуты Source:80 Destination:50000
. Это связано с тем, что зарезервированные порты предназначены только для серверов, которые прослушивают запросы на обслуживание, то есть трафик, предназначенный для порта 80, должен направляться НА веб-сервер, а не ОТ него.
Если ваш брандмауэр НЕ поддерживает состояние, тогда да, вы правы.
Если ваш брандмауэр поддерживает состояние, вам обычно не нужно настраивать противоположное правило. В некоторых системах вам нужно явно настроить его.
Например, в Linux вы можете добавить:
iptables -I INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
чтобы разрешить любые входящие соединения, инициированные хостом.