Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: UFW + NAT  (Прочитано 944 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Pljushevij

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
UFW + NAT
« : 08 Сентябрь 2019, 22:05:53 »
Такое дело...
Забыл как через UFW перенаправить порт.
Подробнее...
Есть eth0 - там выход наружу и есть eth1 - выход во внутреннюю сеть.
Мне надо попасть из любой точки мира через eth0 на определённый IP в сети eth1 через порт 8877.
У меня так уже сделано для другого порта и именно через команду ufw allow и т.д. но я забыл эту команду и не могу найти в нете.
Т.е. не чеорез iptables, а именно через ufw

Оффлайн bezbo

  • Старожил
  • *
  • Сообщений: 1484
    • Просмотр профиля
Re: UFW + NAT
« Ответ #1 : 09 Сентябрь 2019, 10:00:49 »
но я забыл эту команду

а вы уверены, что UFW умеет с помощью встроенных команд управлять Port Forwardings?

Оффлайн Pljushevij

  • Автор темы
  • Новичок
  • *
  • Сообщений: 8
    • Просмотр профиля
Re: UFW + NAT
« Ответ #2 : 09 Сентябрь 2019, 20:26:25 »
Нашёл команду, но она не срабатывает (sudo ufw allow from 192.168.1.105 to any port 1986). Поясню.
Ставил изначально Ubuntu Server 18.04.1 и настроил комп как роутер. Есть один интерфейс с постоянным IP (enp3s0) и второй, смотрящий во внутреннюю  сеть (enp4s0 192.168.1.0/24). Настроил ufw и сделал нужные правила (rules).  Всё работало и работает по сей день, в том числе и перенаправление портов с наружи во внутреннюю сеть.
Теперь хочу создать еще одно правило и перенаправить по порту на определённый внутренний IP - 192.168.1.105
Через sudo ufw allow from 192.168.1.105 to any port 1986 не срабатывает (рестартовал ufw и комп целиком).
Убил это правило и прописал в rc.local:
iptables -A PREROUTING -t nat -i enp3s0 -p tcp –dport 1986 -j DNAT –to 192.168.1.105:1986
iptables -A FORWARD -p tcp -d 192.168.1.105 –dport 1986 -j ACCEPT
Перегрузил комп - не срабатывает. Не могу попасть из вне.
Правда сейчас у меня Ubuntu обновлено до версии 18.04.3 и ядро то же обновил до 5-ого. Не знаю, может это влияет.
Как пробросить порт? Я уже запарился...
Вот ради интереса мой user.rules из /etc/ufw/

*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]
### RULES ###

### tuple ### allow tcp 9091 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 9091 -j ACCEPT

### tuple ### allow tcp 80 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 80 -j ACCEPT

### tuple ### allow tcp 1977 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 1977 -j ACCEPT

### tuple ### allow tcp 8621 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 8621 -j ACCEPT

### tuple ### allow tcp 32400 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 32400 -j ACCEPT

### tuple ### allow tcp 443 0.0.0.0/0 any 192.168.1.0/24 in
-A ufw-user-input -p tcp --dport 443 -s 192.168.1.0/24 -j ACCEPT

### tuple ### allow udp 443 0.0.0.0/0 any 192.168.1.0/24 in
-A ufw-user-input -p udp --dport 443 -s 192.168.1.0/24 -j ACCEPT

### tuple ### allow tcp 32469 0.0.0.0/0 any 192.168.1.0/24 in
-A ufw-user-input -p tcp --dport 32469 -s 192.168.1.0/24 -j ACCEPT

### tuple ### allow udp 32413 0.0.0.0/0 any 192.168.1.0/24 in
-A ufw-user-input -p udp --dport 32413 -s 192.168.1.0/24 -j ACCEPT

### tuple ### allow udp 1900 0.0.0.0/0 any 192.168.1.0/24 in
-A ufw-user-input -p udp --dport 1900 -s 192.168.1.0/24 -j ACCEPT

### tuple ### allow udp 32412 0.0.0.0/0 any 192.168.1.0/24 in
-A ufw-user-input -p udp --dport 32412 -s 192.168.1.0/24 -j ACCEPT

### tuple ### allow udp 32410 0.0.0.0/0 any 192.168.1.0/24 in
-A ufw-user-input -p udp --dport 32410 -s 192.168.1.0/24 -j ACCEPT

### tuple ### allow udp 32414 0.0.0.0/0 any 192.168.1.0/24 in
-A ufw-user-input -p udp --dport 32414 -s 192.168.1.0/24 -j ACCEPT

### tuple ### allow udp 137,138 0.0.0.0/0 any 192.168.1.0/24 Samba - in
-A ufw-user-input -p udp -m multiport --dports 137,138 -s 192.168.1.0/24 -j ACCEPT -m comment --comment 'dapp_Samba'

### tuple ### allow tcp 139,445 0.0.0.0/0 any 192.168.1.0/24 Samba - in
-A ufw-user-input -p tcp -m multiport --dports 139,445 -s 192.168.1.0/24 -j ACCEPT -m comment --comment 'dapp_Samba'

### tuple ### allow any 8000 0.0.0.0/0 any 192.168.1.110 in
-A ufw-user-input -p tcp --dport 8000 -s 192.168.1.110 -j ACCEPT
-A ufw-user-input -p udp --dport 8000 -s 192.168.1.110 -j ACCEPT

### tuple ### allow tcp 2277 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 2277 -j ACCEPT

### tuple ### allow any 1986 0.0.0.0/0 any 192.168.1.105 in
-A ufw-user-input -p tcp --dport 1986 -s 192.168.1.105 -j ACCEPT
-A ufw-user-input -p udp --dport 1986 -s 192.168.1.105 -j ACCEPT

### END RULES ###

### LOGGING ###
-A ufw-after-logging-input -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-after-logging-output -j LOG --log-prefix "[UFW ALLOW] "
-A ufw-after-logging-forward -j LOG --log-prefix "[UFW ALLOW] "
-A ufw-logging-deny -m conntrack --ctstate INVALID -j LOG --log-prefix "[UFW AUDIT INVALID] "
-A ufw-logging-deny -j LOG --log-prefix "[UFW BLOCK] "
-A ufw-logging-allow -j LOG --log-prefix "[UFW ALLOW] "
-I ufw-before-logging-input -j LOG --log-prefix "[UFW AUDIT] " -m limit --limit 3/min --limit-burst 10
-I ufw-before-logging-output -j LOG --log-prefix "[UFW AUDIT] " -m limit --limit 3/min --limit-burst 10
-I ufw-before-logging-forward -j LOG --log-prefix "[UFW AUDIT] " -m limit --limit 3/min --limit-burst 10
### END LOGGING ###

### RATE LIMITING ###
-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT
-A ufw-user-limit-accept -j ACCEPT
### END RATE LIMITING ###
COMMIT

Тут есть правило  для порта 8000 - и оно работает. Устройство во внутренней сетке.
И такое же правило для 1986 порта -  и не срабатывает.

Вот результат команды sudo iptables -t nat -vnL (XX.XX.XX.XXX - скрыл свой внешний IP):

root@userver:~# iptables -t nat -vnL
Chain PREROUTING (policy ACCEPT 11066 packets, 1661K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       tcp  --  enp3s0 *       0.0.0.0/0            ХХ.ХХ.ХХ.ХХХ         tcp dpt:8000 to:192.168.1.110:8000

Chain INPUT (policy ACCEPT 5145 packets, 594K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 6266 packets, 660K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 1399 packets, 268K bytes)
 pkts bytes target     prot opt in     out     source               destination
 8894 1177K MASQUERADE  all  --  *      enp3s0  0.0.0.0/0            0.0.0.0/0

Видим, что ни буквочки про порт 1986 и IP 192.168.1.105. Вопрос - почему?

Пользователь добавил сообщение 09 Сентябрь 2019, 22:22:17:
В итоге сделал, но по моему через ж.пу
Делаем:
iptables-save > /etc/iptables/rules.v4

Находим в появившемся файле /etc/iptables/rules.v4 строку с рабочим пробросом порта 8000:
-A PREROUTING -d 87.99.87.203/32 -i enp3s0 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 192.168.1.110:8000
-A POSTROUTING -o enp3s0 -j MASQUERADE

Вставляем между этими двумя строками нужное мне правило:
-A PREROUTING -d 87.99.87.203/32 -i enp3s0 -p tcp -m tcp --dport 1986 -j DNAT --to-destination 192.168.1.105:1986
Сохраняем и добавляем в rc.local (в конце) строку:
iptables-restore < /etc/iptables/rules.v4
Перезагружаемся и всё работает.
При этом правила на счёт порта 1986 в  ufw rules нету. Я его удалил. Ибо не работает.
« Последнее редактирование: 09 Сентябрь 2019, 22:22:17 от Pljushevij »

 

Страница сгенерирована за 0.065 секунд. Запросов: 25.