Нашёл команду, но она не срабатывает (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 нету. Я его удалил. Ибо не работает.