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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: И снова проброс портов iptables  (Прочитано 1690 раз)

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

Оффлайн Gargul

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
И снова проброс портов iptables
« : 15 Августа 2018, 13:46:26 »
Добрый день. Вопрос с проброcoм портов.
iptables настроены таким образом что при обращении к серверу по внешнему ip, он транслирует запрос в локальную сеть на веб-сервер.
Теперь стоит задача - при запросе на внешний- ip_inet:port  перенаправлять запрос на другой локальный веб-сервер ip_local:port.
Вроде делаю по мануалам, но при рестарте сетевых интерфейсов локальный не стартует и крашится с ошибкой.
Надеюсь что опытный взгляд опытных товарищей мне поможет. =)

enp2s0 - внешний интерфейс
enp3s0 - внутренний интерфейс
$IP_INET - ip внешнего интерфейса шлюза
$IP_GATEWAY ip локального интерфейса шлюза
$IP_LOCAL_1 - ip локального веб-сервера - 1
$IP_LOCAL_2 - ip локального веб-сервера - 2

iptables:
# Generated by iptables-save v1.6.0 on Sat Apr 28 10:40:15 2018
*nat

-A PREROUTING --dst $IP_INET -p tcp  -j DNAT --to-destination $IP_LOCAL_1
-A PREROUTING --dst $IP_INET -p tcp --dport 8081 -j DNAT --to-destination $IP_LOCAL_1:8081

-I FORWARD 1 -i enp2s0 -o enp3s0 -d $IP_LOCAL_2 -p tcp -m tcp --dport 8081 -j ACCEPT

-A POSTROUTING -o enp2s0 -j MASQUERADE
-A POSTROUTING --dst $IP_LOCAL_1 -p tcp -j SNAT --to-source $IP_GATEWAY
#-A POSTROUTING --dst $IP_LOCAL_2 -p tcp --dport 8081 -j SNAT --to sourece $IP_GATEWAY

-A OUTPUT --dst $IP_INET -p tcp -j DNAT --to-destination $IP_LOCAL_1
-A OUTPUT --dst $IP_INET -p tcp --dport 8081 -j DNAT --to-destination $IP_LOCAL_2

:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

COMMIT
# Completed on Sat Apr 28 10:40:15 2018
# Generated by iptables-save v1.6.0 on Sat Apr 28 10:40:15 2018
*filter
:INPUT ACCEPT [184:15331]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [192:16022]
COMMIT
# Completed on Sat Apr 28 10:40:15 2018

Ошибка в консоль:

root@giprogateway:/home/usergipro# /etc/init.d/networking restart
[....] Restarting networking (via systemctl): networking.serviceJob for networking.service failed because the control process exited with error code. See "systemctl status networking.service" and "journalctl -xe" for details.
 failed!

Лог в journalctl
авг 15 11:46:04 giprogateway systemd[1]: Stopped Raise network interfaces.
авг 15 11:46:04 giprogateway systemd[1]: Starting Raise network interfaces...
авг 15 11:46:04 giprogateway ifup[11716]: iptables-restore v1.6.0: unknown option "--to-destination"
авг 15 11:46:04 giprogateway ifup[11716]: Error occurred at line: 5
авг 15 11:46:04 giprogateway ifup[11716]: Try `iptables-restore -h' or 'iptables-restore --help' for more information.
авг 15 11:46:04 giprogateway ifup[11716]: Failed to bring up enp3s0.
авг 15 11:46:04 giprogateway named[1032]: received control channel command 'reconfig'
авг 15 11:46:04 giprogateway named[1032]: loading configuration from '/etc/bind/named.conf'
авг 15 11:46:04 giprogateway named[1032]: reading built-in trusted keys from file '/etc/bind/bind.keys'
авг 15 11:46:04 giprogateway named[1032]: configuring command channel from '/etc/bind/rndc.key'
авг 15 11:46:04 giprogateway named[1032]: configuring command channel from '/etc/bind/rndc.key'
авг 15 11:46:04 giprogateway named[1032]: couldn't add command channel ::1#953: address not available
авг 15 11:46:04 giprogateway named[1032]: address not available resolving './DNSKEY/IN': 2001:500:3::42#53
авг 15 11:46:04 giprogateway named[1032]: address not available resolving './NS/IN': 2001:500:3::42#53
авг 15 11:46:04 giprogateway named[1032]: reloading configuration succeeded
авг 15 11:46:04 giprogateway named[1032]: any newly configured zones are now loaded
авг 15 11:46:04 giprogateway systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
авг 15 11:46:04 giprogateway systemd[1]: Failed to start Raise network interfaces.
авг 15 11:46:04 giprogateway systemd[1]: networking.service: Unit entered failed state.
авг 15 11:46:04 giprogateway systemd[1]: networking.service: Failed with result 'exit-code'.



Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #1 : 15 Августа 2018, 14:55:18 »
Потому что не надо делать networking restart.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Gargul

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #2 : 15 Августа 2018, 17:16:12 »
Потому что не надо делать networking restart.

Reboot должен помочь?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #3 : 15 Августа 2018, 17:27:25 »
Может помочь исправление ошибок.
А для этого надо как минимум показать iptables-save полностью.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Gargul

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #4 : 17 Августа 2018, 16:26:50 »
Вывод iptables-save без проброса портов

# Generated by iptables-save v1.6.0 on Fri Aug 17 16:19:23 2018
*filter
:INPUT ACCEPT [12496:1028665]
:FORWARD ACCEPT [1527637:1260078490]
:OUTPUT ACCEPT [23456:2138803]
COMMIT
# Completed on Fri Aug 17 16:19:23 2018
# Generated by iptables-save v1.6.0 on Fri Aug 17 16:19:23 2018
*nat
:PREROUTING ACCEPT [33407:3116750]
:INPUT ACCEPT [4945:406148]
:OUTPUT ACCEPT [54:5071]
:POSTROUTING ACCEPT [11:1728]
-A PREROUTING -d 193.27.41.151/32 -p tcp -j DNAT --to-destination 192.168.62.33
-A OUTPUT -d 193.27.41.151/32 -p tcp -j DNAT --to-destination 192.168.62.33
-A POSTROUTING -o enp2s0 -j MASQUERADE
-A POSTROUTING -d 192.168.62.33/32 -p tcp -j SNAT --to-source 192.168.62.254
COMMIT
# Completed on Fri Aug 17 16:19:23 2018

Вывод iptables-save с пробросом портов

# Generated by iptables-save v1.6.0 on Fri Aug 17 16:22:23 2018
*nat
:PREROUTING ACCEPT [1401:157713]
:INPUT ACCEPT [1400:157484]
:OUTPUT ACCEPT [30:2150]
:POSTROUTING ACCEPT [30:2150]
COMMIT
# Completed on Fri Aug 17 16:22:23 2018

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #5 : 17 Августа 2018, 17:19:59 »
А Вы вот прям ВСЕ ВСЕ tcp порты пробрасываете?

Оффлайн bearpuh

  • Участник
  • *
  • Сообщений: 143
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #6 : 17 Августа 2018, 17:37:14 »
-A POSTROUTING -d 192.168.62.33/32 -p tcp -j SNAT --to-source 192.168.62.254

Это правило не работает. Цепочка output лишняя, либо вы чего то не договариваете. От второй таблицы только заголовок виден.

А Вы вот прям ВСЕ ВСЕ tcp порты пробрасываете?
Это похоже на попытку сделать nat 1:1

Оффлайн Gargul

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #7 : 17 Августа 2018, 18:47:00 »
-A POSTROUTING -d 192.168.62.33/32 -p tcp -j SNAT --to-source 192.168.62.254

Это правило не работает. Цепочка output лишняя, либо вы чего то не договариваете. От второй таблицы только заголовок виден.


От второй таблицы iptables-save виден только заголовок, т.к. при старте системы внутренний интерфейс не поднимается и выдает ошибку, в шапке есть лог.

fisher74
Вы имеете ввиду, что я неправильно сформировал iptables и по сути у меня все порты пробрасываются в локалку?
И поэтому обращение на 62.33 - проходит без проблем?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #8 : 17 Августа 2018, 19:20:36 »
Присутствует ощущение, что присутствует недопонимание.
Объясните исходную постановку задачи, пожалуйста.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Gargul

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #9 : 17 Августа 2018, 19:29:29 »
Цитировать


1. Есть шлюз. Он раздает интернет в локальную сеть. - это работает.
2. В локале есть веб-сервер-1. Шлюз настроен таким образом, что при обращении на его внешний IP, он перенаправляет запрос на локальный веб-сервер-1. - это работает.
3. Необходимо добавить правило для шлюза, что бы при обращении на IP-шлюза:8081, он перенаправлял запрос на другой локальный веб-сервер-2 на адрес IP-local:8081. - вот это не работает.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28366
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #10 : 17 Августа 2018, 19:44:33 »
Шлюз настроен таким образом
Для непонятливых, повторяю: меня не [трогает], каким образом шлюз настроен сейчас.
Меня интересует исходная постановка задачи.

Если у вас в сети два веб-сервера, к которым нужно дать доступ снаружи, не проще ли поставить обратный прокси? Заодно избавитесь от лишних портов в URL.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #11 : 17 Августа 2018, 20:25:18 »
Это правило не работает. Цепочка output лишняя
Чёйта? Вы похоже Iptables Tutorial не читали. А если читали, то не всё...
Обновите в памяти пункт 6.5.2

Оффлайн Gargul

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #12 : 17 Августа 2018, 21:39:23 »
Шлюз настроен таким образом
Для непонятливых, повторяю: меня не [трогает], каким образом шлюз настроен сейчас.
Меня интересует исходная постановка задачи.

Если у вас в сети два веб-сервера, к которым нужно дать доступ снаружи, не проще ли поставить обратный прокси? Заодно избавитесь от лишних портов в URL.

Хорошо. Задача.
Настроить iptables так, что бы при обращении на шлюз по ссылке http://ip.ip.ip.ip:8081 клиент попадал на локальный сервер с таким же портом.

Обратный прокси не пробовал.
Если вдруг потребуется дать доступ на локальный ftp  - легче будет пробросить порты, как мне кажется.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13756
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #13 : 17 Августа 2018, 21:45:00 »
ip a; ip r покажите, а то есть подозрение...

Оффлайн bearpuh

  • Участник
  • *
  • Сообщений: 143
    • Просмотр профиля
Re: И снова проброс портов iptables
« Ответ #14 : 20 Августа 2018, 09:52:38 »
Это правило не работает. Цепочка output лишняя
Чёйта? Вы похоже Iptables Tutorial не читали. А если читали, то не всё...
Обновите в памяти пункт 6.5.2

Я вообще то про другую цепочку писал.

Пользователь добавил сообщение 20 Августа 2018, 09:54:22:
Хорошо. Задача.
Настроить iptables так, что бы при обращении на шлюз по ссылке http://ip.ip.ip.ip:8081 клиент попадал на локальный сервер с таким же портом.

Это вся задача? Т.е. доступ к 1-му вэб серверу не нужен?
« Последнее редактирование: 20 Августа 2018, 09:54:22 от bearpuh »

 

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