Вопрос или проблема
- настроить перенаправление порта
firewall-cmd --permanent --add-masquerade
firewall-cmd --permanent --add-forward-port=port=81:proto=tcp:toaddr=127.0.0.1:toport=80
firewall-cmd --reload
- откройте сервер, используйте:
nc -lk 80
- используйте
nc -v 127.0.0.1 81
не сработает, ноnc -v 127.0.0.1 80
сработает
.
Ответ или решение
Когда дело касается настройки сетевых портов в Linux с помощью firewall-cmd
, может возникнуть несколько причин, почему переадресация порта не работает, как ожидалось. Давайте подробно рассмотрим вашу конфигурацию и возможные причины проблемы.
Шаги настройки и проверка
-
Проверка конфигурации перенаправления порта:
Ваши команды для настройки переадресации порта выглядят корректно:firewall-cmd --permanent --add-masquerade firewall-cmd --permanent --add-forward-port=port=81:proto=tcp:toaddr=127.0.0.1:toport=80 firewall-cmd --reload
Здесь вы сначала добавляете маскарад, что позволяет пакетам, проходящим через интерфейс, изменять свои адреса, чтобы они выглядели как если бы они приходили с вашего сервера. Затем вы настраиваете перенаправление трафика с порта 81 на порт 80 локального адреса.
-
Проверка, работает ли сервер на порту 80:
Вы используете командуnc -lk 80
, что является правильным способом открыть порт 80 для прослушивания. Подтвердите, что этот сервер успешно запущен, и что вы можете подключиться к нему напрямую черезnc -v 127.0.0.1 80
, что, судя по вашему описанию, работает. -
Проверка работы переадресации:
При попытке подключиться кnc -v 127.0.0.1 81
, вы ожидаете, что это будет переадресовано на порт 80, но это не работает. Вот несколько возможных причин:-
Недостаточные права: Убедитесь, что вы выполняете команды
firewall-cmd
с правами суперпользователя. Для этого используйтеsudo
перед каждой командой, если вы не уже находитесь под суперпользователем. -
Проблемы с конфигурацией firewall: Вы можете проверить текущие правила брандмауэра, используя команду:
firewall-cmd --list-all
Убедитесь, что правило перенаправления порта отображается в выводе. Если его нет, это может означать, что оно не было успешно добавлено.
-
Правила в других брандмауэрах: Если у вас установлен другой брандмауэр, например,
iptables
, он может блокировать соединения на порту 81. Проверьте его настройки и убедитесь, что они не конфликтуют сfirewalld
. -
Проблемы с NAT: Проверьте, что на вашем сервере нет других настроек NAT, которые могут влиять на поведение соединений.
-
Рекомендуемые действия
-
Перезапустите службы брандмауэра:
systemctl restart firewalld
-
Повторно проверьте ваши правила и примите во внимание возможные конфликты с другими настройками.
-
Попробуйте временно отключить брандмауэр:
sudo systemctl stop firewalld
После этого протестируйте соединение еще раз. Если оно заработает, значит проблема определенно в конфигурации брандмауэра.
-
Изучите журналы системы и брандмауэра, они могут дать подсказки о произошедших ошибках.
Заключение
Настройка перенаправления портов может быть проблематичной из-за множества переменных, включая конфигурации самой системы и законодательства сетевого взаимодействия. Надеюсь, описанные выше шаги и рекомендации помогут вам устранить проблему с переадресацией портов на вашем сервере.