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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Проброс порта "в интернет" не через шлюз по умолчанию.  (Прочитано 3135 раз)

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

Оффлайн Ariec

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
В гугле были найдены инструкции по пробросу порта не через шлюз по умолчанию. Но в тех случаях проброс осуществлялся внутри локальной сети. http://belgorod.lug.ru/wiki/index.php/%D0%9F%D1%80%D0%BE%D0%B1%D1%80%D0%BE%D1%81_%D0%BF%D0%BE%D1%80%D1%82%D0%B0_%D0%B2_iptables#.D0.9F.D1.80.D0.BE.D0.B1.D1.80.D0.BE.D1.81_.D0.BD.D0.B5_.D1.87.D0.B5.D1.80.D0.B5.D0.B7_.D1.88.D0.BB.D1.8E.D0.B7_.D0.BF.D0.BE_.D1.83.D0.BC.D0.BE.D0.BB.D1.87.D0.B0.D0.BD.D0.B8.D1.8E

 Прелюдия. Имеется ubuntu сервер, в него воткнуты три сетевушки  192.168.1.1 , 192.168.0.1 и xx.xx.xx.xx - провайдерская. Необходимо пробросить порт на локальный веб-сервер 192.168.1.2. Сложность в том, что веб-сервер не администрируемый (вообще, это видеорегистратор). Соответственно, для него нельзя прописывать маршруты, гатэвэи и тд.

То есть, из интернета придёт пакет [yy.yy.yy.yy|xx.xx.xx.xx] ([источник|назначение]), который iptables'ом (на нашем шлюзе) будет изменён на [yy.yy.yy.yy|192.168.1.2], и уйдёт на наш веб-сервер. А вот уже веб-сервер не сможет отправить пакет обратно на yy.yy.yy.yy, потому как у него нет маршрутов для его отсылки, и он просто не знает куда его слать. Я прав?
Да, yy.yy.yy.yy - неизвестный заранее адрес, он может меняться.

Для проверки работы пробую с другой локальной сети (интернета сейчас нету...) через 192.168.0.1:80 ломиться к регистратору, пакеты обламываются...
Схемка сети:

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27658
    • Просмотр профиля
Добавить эти маршруты.
http://anr-daemon.livejournal.com/1655.html
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн Ariec

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
AnrDaemon, а можно попросить объяснить смысл этих маршрутов ? Нет, если на пробрасываемом хосте установить шлюзом по умолчанию установить тот шлюз, на котором заведены эти правила, то да, результат будет.
Лично у меня сейчас картина в том, что хосту приходит пакет уу.уу.уу.уу (или пакет из другой подсети 192.168.1.0/24), и он не знает куда на него отвечать, никаких маршрутов на нём нет, кроме
192.168.1.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0

Вообще, есть идея-костыль, которую я не знаю как организовать.
1. пакет [yy.yy.yy.yy|xx.xx.xx.xx] приходит на шлюз по 80 порту.
2. он изменяется на [192.168.1.1|192.168.1.2], при этом адрес yy.yy.yy.yy iptables'ом записвается в какой-то абстрактный буфер обмена.
3. Собственно, после этого пакет свободно уходит на веб сервер, который уверен, что с ним работает локальный компьютер.
4. Ответный пакет [192.168.1.2|192.168.1.1] от веб сервера приходит на шлюз, где он изменяется на [xx.xx.xx.xx|yy.yy.yy.yy], и уходит обратно в инет (или в соседнюю подсеть), клиенту. При этом хх.хх.хх.хх нам известно, а yy.yy.yy.yy берётся из буфера.
При этом запись в буфер производить только для пакетов, устанавливающих соединение, чтобы лишний раз не тормошить шлюз...

Посему вопрос: я изобретаю колесо ? Может это можно как-то маскарадингом сделать (ведь там автоматизирована обратная подмена ip адреса, но опять же, клиенты внутри сети имеют настройку шлюза по умолчанию).

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27658
    • Просмотр профиля
Эти правила устанавливаются на хосте! Не на шлюзе!
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн Ariec

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Ну, если бы можно было администрировать хост, то можно бы было обойтись простым добавлением "шлюза по умолчанию".
Может есть идеи реализации настройкой на шлюзе ? В частности способом, который описал я...

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27658
    • Просмотр профиля
Странные у вас проблемы.
Без настройки хоста нормально они не решаются. Только с потерей функциональности хоста.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн Ariec

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
Ну, если есть идеи, можно озвучить. Насколько критична эта потеря функциональности, дело третье...

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27658
    • Просмотр профиля
Таки это дело первое.
Ваш вебсервер станет абсолютно слепым, потеряет возможность определять адреса клиентов. Для него все запросы будут приходить с адреса шлюза.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн Ariec

  • Автор темы
  • Новичок
  • *
  • Сообщений: 14
    • Просмотр профиля
AnrDaemon,
Сейчас дома воспроизвёл ситуацию:
Есть шлюз, две сетевушки хх.хх.хх.хх провайдерский и 192.168.1.1 локальная сеть.
Есть хост 192.168.1.2, маска 255.255.255.0. На хосте нет маршрутизации, он не видит интернета (небольшой бардак в таблице, но не суть):
[admin@WL520GU root]$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.112.112.112  0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
192.168.0.0     192.168.1.4     255.255.255.0   UG    0      0        0 br0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0

На шлюзе очищаем все таблицы iptables (кроме маскарадинга), готовим:
iptables -t nat -A PREROUTING -p tcp -d xx.xx.xx.xx --dport 8080 -j DNAT --to-destination 192.168.1.2:80
#перенаправляем запросы из интернета по порту 8080 на наш сервер в локалке
iptables -t nat -A POSTROUTING -s 192.168.1.2 -p tcp -m tcp --dport 80 -j SNAT --to-source xx.xx.xx.xx
#подменяем в уходящих обратно в интернет пакетах адрес источника на адрес нашего шлюза
iptables -t nat -A POSTROUTING --dst 192.168.1.2 -p tcp -m tcp --dport 80 -j SNAT --to-source 192.168.1.1
#правило, по идее, для доступа к локальному серверу по адресу xx.xx.xx.xx:8080 из локальной же сети
Последнее правило интересно тем, что
Цитировать
сервер станет абсолютно слепым, потеряет возможность определять адреса клиентов. Для него все запросы будут приходить с адреса шлюза.
, но оно таки работает  :), хоть для меня и не очень понятно, как... Отличие от первой ситуации в том, что тут на шлюзе включён маскарадинг, и он раздаёт интернет в локальную сеть...

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27658
    • Просмотр профиля
Как раз понятно, как.
Адрес реального отправителя пакетов подменяется адресом шлюза. Соответственно, сервер не включает маршрутизацию, а возвращает ответы обратно на шлюз.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

 

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