попытка добавить подключение VNC с отображением порта на порт

Вопрос или проблема

У меня уже есть нат, работающий на enp3s5(внутренний) к enp2s0(внешний). Все работает на выход и на вход, если указано.

Я хочу разрешить входящий трафик с 59027 пройти на 5927 на определенный IP-адрес.

Добавлено правило пользователя

-A ufw-user-input -i enp0s2 -p tcp --dport 59027 -j ACCEPT
-A ufw-user-input -i enp0s2 -p udp --dport 59027 -j ACCEPT

и PREROUTING

-A PREROUTING -p tcp --dport 59027 -i enp0s2 -j DNAT --to-destination 192.168.0.27:5900

с пересылкой в моих фильтрах

:FORWARD ACCEPT [0:0]
-A FORWARD -p tcp -d 192.168.0.27 --dport 5900 -i enp0s2 -o enp3s5 -j ACCEPT

Я сделал отключение и включение без ошибок, но это не работает. Я что-то пропустил?

до

#
# rules.before
#
# Правила, которые должны выполняться перед добавленными через командную строку ufw правилами. Пользовательские
# правила должны быть добавлены в одну из этих цепочек:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward
#

#nat
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]


# Перенаправления портов
-A PREROUTING -p tcp --dport 59027 -i enp0s2 -j DNAT --to-destination 192.168.0.27:5900

-A PREROUTING -i enp2s0 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.19
#-A POSTROUTING -s  192.168.0.1/24  -o enp2s0 -j MASQUERADE
#-A POSTROUTING -s enp3s5   -o enp2s0 -j MASQUERADE
-A POSTROUTING  -s 192.168.0.0/24 -o enp2s0 -j MASQUERADE
COMMIT
#mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
#-A FORWARD -i enp3s5 -j ACCEPT


# Не удаляйте эти необходимые строки, в противном случае возникнут ошибки
*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]

:FORWARD ACCEPT [0:0]
-A FORWARD -p tcp -d 192.168.0.27 --dport 5900 -i enp0s2 -o enp3s5 -j ACCEPT
# Конец необходимых строк


# разрешить все на loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

# быстро обрабатывать пакеты, для которых у нас уже есть соединение
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

# отбрасывать невалидные пакеты (регистрирует их на уровне логирования medium и выше)
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP

# корректные коды icmp для INPUT
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

# корректный код icmp для FORWARD
-A ufw-before-forward -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-forward -p icmp --icmp-type echo-request -j ACCEPT

# позволить клиенту dhcp работать
-A ufw-before-input -p udp --sport 67 --dport 68 -j ACCEPT

#
# ufw-not-local
#
-A ufw-before-input -j ufw-not-local

# если LOCAL, RETURN
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN

# если MULTICAST, RETURN
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN

# если BROADCAST, RETURN
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN

# все другие не локальные пакеты отбрасываются
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny
-A ufw-not-local -j DROP



COMMIT



пользователь
*filter
:ufw-user-input - [0:0]
:ufw-user-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-logging-deny - [0:0]
:ufw-logging-allow - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
### ПРАВИЛА ###

### tuple ### разрешить tcp 5900:59999 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp -m multiport --dports 5900:59999 -j ACCEPT

### tuple ### разрешить tcp 22 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 22 -j ACCEPT

### tuple ### разрешить udp 137,138 0.0.0.0/0 any 0.0.0.0/0 Samba - in
-A ufw-user-input -p udp -m multiport --dports 137,138 -j ACCEPT -m comment --comment 'dapp_Samba'

### tuple ### разрешить tcp 139,445 0.0.0.0/0 any 0.0.0.0/0 Samba - in
-A ufw-user-input -p tcp -m multiport --dports 139,445 -j ACCEPT -m comment --comment 'dapp_Samba'

### tuple ### разрешить любой 59027 0.0.0.0/0 any 0.0.0.0/0 in_enp0s2
-A ufw-user-input -i enp0s2 -p tcp --dport 59027 -j ACCEPT
-A ufw-user-input -i enp0s2 -p udp --dport 59027 -j ACCEPT

### tuple ### разрешить любой 59025 0.0.0.0/0 any 0.0.0.0/0 in_enp0s2
-A ufw-user-input -i enp0s2 -p tcp --dport 59025 -j ACCEPT
-A ufw-user-input -i enp0s2 -p udp --dport 59025 -j ACCEPT

### tuple ### разрешить любой 59023 0.0.0.0/0 any 0.0.0.0/0 in_enp0s2
-A ufw-user-input -i enp0s2 -p tcp --dport 59023 -j ACCEPT
-A ufw-user-input -i enp0s2 -p udp --dport 59023 -j ACCEPT

### tuple ### разрешить любой 59021 0.0.0.0/0 any 0.0.0.0/0 in_enp0s2
-A ufw-user-input -i enp0s2 -p tcp --dport 59021 -j ACCEPT
-A ufw-user-input -i enp0s2 -p udp --dport 59021 -j ACCEPT

### tuple ### разрешить любой 59029 0.0.0.0/0 any 0.0.0.0/0 in_enp0s2
-A ufw-user-input -i enp0s2 -p tcp --dport 59029 -j ACCEPT
-A ufw-user-input -i enp0s2 -p udp --dport 59029 -j ACCEPT

### КОНЕЦ ПРАВИЛ ###

### ЛОГИРОВАНИЕ ###
-I ufw-user-logging-input -j RETURN
-I ufw-user-logging-output -j RETURN
-I ufw-user-logging-forward -j RETURN
### КОНЕЦ ЛОГИРОВАНИЯ ###

### ЛИМИТИРОВАНИЕ ###
-A ufw-user-limit -j REJECT
-A ufw-user-limit-accept -j ACCEPT
### КОНЕЦ ЛИМИТИРОВАНИЯ ###
COMMIT

Ответ или решение

Проблема, описанная вами, связана с необходимостью настройки перенаправления портов для VNC через NAT, чтобы трафик с внешнего порта 59027 перенаправлялся на внутренний IP-адрес и порт 192.168.0.27:5900. Давайте подробно рассмотрим основные шаги и возможные ошибки в этой конфигурации.

Теория:

Перенаправление портов с помощью iptables требует настройки нескольких таблиц: nat для перенаправления пакетов и filter для разрешения их прохождения. Вы уже добавили правила в PREROUTING, пользуетесь NAT и обеспечиваете доступ к внутренней сети через UFW. Однако могут быть некоторые моменты, на которые стоит обратить внимание:

  1. Правильность конфигурации интерфейсов: Убедитесь, что указанные интерфейсы (enp0s2, enp3s5, enp2s0) соответствуют вашей сети. Возможно, перепутаны входящие и исходящие интерфейсы.

  2. Порт и IP-адрес назначения: Проверьте, что IP-адрес 192.168.0.27 действительно активен и слушает на порту 5900.

  3. Правильная последовательность и наличие необходимых правил: Возможно, требуется больше правил, чтобы пакеты могли перемещаться между таблицами nat и filter.

Пример:

Из вашего сценария:

-A PREROUTING -p tcp --dport 59027 -i enp0s2 -j DNAT --to-destination 192.168.0.27:5900
-A FORWARD -p tcp -d 192.168.0.27 --dport 5900 -i enp0s2 -o enp3s5 -j ACCEPT
-A POSTROUTING -s 192.168.0.0/24 -o enp2s0 -j MASQUERADE

Эти правила выглядят корректно с точки зрения структурирования, однако необходимо убедиться, что они выполняются в правильном порядке, и что нет конфликтующих правил, которые могут препятствовать обработке данных.

Применение:

  1. Проверка маршрутизации (статуса интерфейсов):

    Убедитесь, что интерфейсы enp3s5 (внутренний) и enp2s0 (внешний) настроены правильно и активно работают.

  2. Диагностика и логгирование:

    Включите логирование для диагностики проблем, чтобы отслеживать, какие пакеты достигают тела таблиц filter и nat. Это можно сделать добавлением правил логирования сразу перед и после ваших текущих правил, чтобы убедиться, что инжестируете все пакеты.

  3. Тест конфигурации:

    Запустите диагностику командой iptables -L -v -n и iptables -t nat -L -v -n для проверки числа срабатываний правил и нахождения возможных блокировок или контрправил, которые могут препятствовать желаемому перенаправлению.

  4. Конфигурация/перезапуск сетевых сервисов:

    После внесения всех необходимых изменений перезагрузите сетевые службы или перезагрузите сервер для применения всех изменений.

Если вышеуказанные шаги не решают проблему, дальнейшая диагностика может потребовать глубокого анализа сети и конфигураций, так как существует множество факторов, влияющих на маршрутизацию и перенаправление портов.

Оцените материал
Добавить комментарий

Капча загружается...