Как правильно настроить переадресацию портов с использованием UWF: пошаговое руководство

Настройка переадресации портов на сервере Ubuntu: Полное руководство

Когда вы работаете с сетями и серверами, одним из оперативных заданий может стать настройка переадресации портов. В этой статье мы разберем, как настроить переадресацию портов на сервере под управлением Ubuntu, который использует Wi-Fi и Ethernet для подключения к различным сетям.

Информация о сети и оборудовании

Итак, у нас есть сервер на базе Ubuntu с двумя интерфейсами:

  • Wi-Fi (wlo1) с подсетью 10.42.1.0/24
  • Ethernet (enp44s0) с подсетью 10.42.0.0/24

Сервер имеет IP-адреса 10.42.0.1 и 10.42.1.1. В проводной сети у нас есть рабочая станция с веб-сервером с IP-адресом 10.42.0.216. Мы также имеем телефон, подключенный к Wi-Fi, с IP-адресом 10.42.1.111. Цель состоит в том, чтобы настроить переадресацию портов таким образом, чтобы при подключении к адресу 10.42.1.1 с телефона запросы перенаправлялись на рабочую станцию и ее веб-сервер.

Установка и настройка UFW

Ubuntu идет с брандмауэром UFW (Uncomplicated Firewall), однако его функционал для переадресации портов достаточно ограничен. Чтобы настроить переадресацию портов, необходимо внести изменения в системные файлы.

  1. Раскомментируйте строку net/ipv4/ip_forward=1 в файле /etc/ufw/sysctl.conf.
  2. Установите DEFAULT_FORWARD_POLICY="ACCEPT" в файле /etc/default/ufw.
  3. Разрешите порты 80 и 443 с помощью правил UFW.

Редактирование правил UFW

Добавьте следующее в начало файла /etc/ufw/before.rules:

*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -d 10.42.1.1 -p tcp --dport 80 -j DNAT --to-destination 10.42.0.216:80
-A PREROUTING -d 10.42.1.1 -p tcp --dport 443 -j DNAT --to-destination 10.42.0.216:443
-A POSTROUTING -s 10.42.0.0/24 -j MASQUERADE
COMMIT

Однако, даже после внесения всех изменений и настройки UFW, проблемы могут сохраняться.

Понимание nftables и NetworkManager

С недавними обновлениями Ubuntu появился nftables, который заменил классический iptables для настройки брандмауэра. Это может вызывать путаницу, особенно если у вас уже есть созданные правила iptables.

У Ubuntu также есть NetworkManager, который может автоматически устанавливать правила nftables. Эта автоматизация иногда может блокировать необходимую связь между сетями. Чтобы проверить, какие правила применяются NetworkManager’ом, используйте команду:

nft list ruleset

Обратите внимание на правила, которые могут блокировать трафик между wlo1 и enp44s0. Если вы видите такие строки, как iifname "wlo1" reject, это и есть источник проблемы.

Решение проблемы с блокировкой

Чтобы NetworkManager не устанавливал свои правила брандмауэра, вам необходимо отредактировать файл /etc/NetworkManager/NetworkManager.conf и добавить следующую строку в раздел [main]:

firewall-backend=none

Теперь у вас будет возможность вручную настраивать правила брандмауэра. Вот пример скрипта nftables, который можно использовать для настройки переадресации:

#!/usr/sbin/nft -f

# Flush the rule set
flush ruleset

# Поделиться интернетом с компьютерами на Wi-Fi
table ip nm-shared-wlo1 {
    chain nat_postrouting {
        type nat hook postrouting priority srcnat; policy accept;
        ip saddr 10.42.1.0/24 ip daddr != 10.42.1.0/24 masquerade
    }
    chain filter_forward {
        type filter hook forward priority filter; policy accept;
        ip daddr 10.42.1.0/24 oifname "wlo1" ct state { established, related } accept
        ip saddr 10.42.1.0/24 iifname "wlo1" accept
        iifname "enp44s0" oifname "wlo1" accept
        iifname "wlo1"    oifname "enp44s0" accept
        iifname "wlo1" reject
        oifname "wlo1" reject
    }
}

Заключение

Теперь, когда вы внесли необходимые изменения, вы сможете настроить переадресацию портов на своем сервере Ubuntu. Для этого просто добавьте кабельный частный IP-адрес и настройте NAT для перенаправления трафика. Опираясь на приведенные шаги, вы сможете избежать проблемы "недоступности порта". Не забывайте тестировать соединения, используя такие инструменты, как telnet или curl, чтобы убедиться, что все работает как следует.

Источник

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *