URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 85456
[ Назад ]

Исходное сообщение
"Доступ к локальным заNATовым серверам c разных внешних IP"

Отправлено COPOKA , 29-Май-09 17:20 
Доброго всем настроения!!!
(Я нуб в юниксах, прошу сильно ногами не пинать...)

Вот дома изучаю юникс системы. Поставил себе Fedora 10 как домашний роутер для двух провайдеров.

И вот задача: Попадать на домашнии компы(сервера)  из инета. Причём используя разных провайдеров(по желанию).


для упращения понимания.


надо тебе на сервер в локалке попасть по RDP(3389)  для управления или по SSH(22)


У тебя есть роутер с двумя инетами.  


.           .         .        .           .         .         .      eth1-------------------------   88.88.88.88
.           .         .        .           .         .         .      /
RDP(или SHH)(192.168.0.1)--eth0- NAT (default gw 88.88.88.88)
.           .         .        .           .         .         .      \
.           .         .        .           .         .         .      eth2-------------------------   77.77.77.77

Ты присоеденишься только на 88.88.88.88
Как сделать возможным присоединения к внутреннему серверу через 77.77.77.77 без смены default gw  на роутере?

Порт форвардинг делаю так:

-A PREROUTING -i eth1 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.1:22

Этого хватает   только для связи с одного ИП через eth1(88.88.88.88) Собственно на него гейт и прописан.

добавляю для второго инет-интерфейса  eth2(77.77.77.77)

-A PREROUTING -i eth2 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.1:22

но на 77.77.77.77  попасть не могу. Ибо  запрос проходит ко мне в сеть. А ответ уходит через default gw eth1(88.88.88.88).
Соответственно соединение не устанавливается....

как с этим быть ума не приложу.

Как и с помощью чего должна быть построена маршрутизация  чтобы эта схема заработала???


Содержание

Сообщения в этом обсуждении
"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено reader , 29-Май-09 20:56 
>[оверквотинг удален]
>
>
>но на 77.77.77.77  попасть не могу. Ибо  запрос проходит ко
>мне в сеть. А ответ уходит через default gw eth1(88.88.88.88).
>Соответственно соединение не устанавливается....
>
>как с этим быть ума не приложу.
>
>Как и с помощью чего должна быть построена маршрутизация  чтобы эта
>схема заработала???

поиск по "два провайдера"
http://www.opennet.me/tips/info/1179.shtml
http://www.osp.ru/lan/2002/05/136078/


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено COPOKA , 29-Май-09 22:50 
>[оверквотинг удален]
>>Соответственно соединение не устанавливается....
>>
>>как с этим быть ума не приложу.
>>
>>Как и с помощью чего должна быть построена маршрутизация  чтобы эта
>>схема заработала???
>
>поиск по "два провайдера"
>http://www.opennet.me/tips/info/1179.shtml
>http://www.osp.ru/lan/2002/05/136078/

Задача не такая тривиальная!!!  Вопрос не в том как в инет выйти через двух провайдеров. А как достучаться до сервера спрятанного за натом в своей локалке из инета. Причем не только достучаться, а иметь возможность попасть на него и через ip 77.77.77.77 и через 88.88.88.88 одновременно!!!

в статьях не то. в коментах кто-то сказал, что решил подобное с помощью connmark - а что это такое и как он решил - ничего не написана. Может он имел ввиду conntrack?


Ещё раз попробую описать что происходит:


путь первого пакета с запросом.


Интернет---eth2 роутера ---- eth0 роутера ----  компьютер на который ремапен пакет (формируется ответ и отсылается в ответ) ----  eth0 роутера  ----- eth1 роутера--- интернет

И тот кто посылал запрос  на ip 77.77.77.77  получает ответ от 88.88.88.88   Соответственно этот ответ дропается - ибо у 88.88.88.88  мы ничего не спрашивали. А 77.77.77.77  нам так и не ответил   - TIME OUT !!!!!!


Конечно мы на роутере можем сменить default gw 88.88.88.88  на 77.77.77.77   И связь установиться.

Но тогда 88.88.88.88 не сможем устанавливать связь


********************************************
из моих теоретических бредней.

на роутере записывать в одну строку: "IP пославший запрос, порт назначения  и интерфейс на который поступил запрос".

и при обратном получении из локальной сети пакета  с адресом и портом назначения идентичным с адресом и портом в строке роутить через интерфейс указанный в этой же строке в этой строке.

Ну и контролировать статус соединения. Как упало - строку удалить до следующего запроса.

***********************************************

Вот только как это реализовать - ума не приложу....


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено reader , 30-Май-09 01:09 
смысл в том, что серваку внутри сети дать два IP из разных подсетей и пробрасывать соответственно входящие на 77.77.77.77 на один адрес, а входящие на 88.88.88.88 на другой, а потом ответы на основе ip источника разрулить по разным таблицам, со своим шлюзом у каждой.

можно конечно и позамороченей придумать, а возможно есть что и попроще


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено COPOKA , 30-Май-09 01:26 
>смысл в том, что серваку внутри сети дать два IP из разных
>подсетей и пробрасывать соответственно входящие на 77.77.77.77 на один адрес, а
>входящие на 88.88.88.88 на другой, а потом ответы на основе ip
>источника разрулить по разным таблицам, со своим шлюзом у каждой.
>
>можно конечно и позамороченей придумать, а возможно есть что и попроще

Хорошее предложение. !Но хочется позаморачеваться. +5


1)А предположим что серверов за натом 200 штук и меняються как перчатки. И каждый раз алисы на них поднимать или втыкать и настраивать сетивухи - не прикольно.

2)А если у меня будет не два провайдера, а 3 (как планирую)  или вообще 6-10? 10 алесов на одну машину?

Хочется более универсального решения которое можно было применять. И очень желательно чтобы все действия осуществлялись исключительно на роутере.

Если есть соображения какие нибудь - хотя бы скажите в каком направлении копать...


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено Vladimir , 30-Май-09 05:52 
>[оверквотинг удален]
>сетивухи - не прикольно.
>
>2)А если у меня будет не два провайдера, а 3 (как планирую)
> или вообще 6-10? 10 алесов на одну машину?
>
>Хочется более универсального решения которое можно было применять. И очень желательно чтобы
>все действия осуществлялись исключительно на роутере.
>
>Если есть соображения какие нибудь - хотя бы скажите в каком направлении
>копать...

http://www.openvpn.org


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено angra , 31-Май-09 09:06 
>Задача не такая тривиальная!!!  

Да неужто?
>Вопрос не в том как в инет
>выйти через двух провайдеров. А как достучаться до сервера спрятанного за
>натом в своей локалке из инета. Причем не только достучаться, а
>иметь возможность попасть на него и через ip 77.77.77.77 и через
>88.88.88.88 одновременно!!!

Нет, главный вопрос в том, как сделать чтобы соединения пришедшие с одного интерфейса уходили через  него же. И этот вопрос рассматривается первым в статьях про "два провайдера" и решается элементарно. Но вы конечно у нас особый, для вас надо индивидуально написать.

>в статьях не то. в коментах кто-то сказал, что решил подобное с
>помощью connmark - а что это такое и как он решил
>- ничего не написана. Может он имел ввиду conntrack?

А поискать в man iptables или хотя бы в гугле по слову connmark вы конечно не догадались.


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено COPOKA , 31-Май-09 16:57 
>>Задача не такая тривиальная!!!  
>
>Нет, главный вопрос в том, как сделать чтобы соединения пришедшие с одного
>интерфейса уходили через  него же. И этот вопрос рассматривается первым
>в статьях про "два провайдера" и решается элементарно. Но вы конечно
>у нас особый, для вас надо индивидуально написать.
>

Ещё раз внимательно прочтите условия!!!!

""в статьях про "два провайдера"  решается элементарно""  
Ничего там не решается!

Там описывается ВЫХОД!!!!

а мне нужен ВХОД!!!!

ВХОД на разные интерфейсы которые приведут к одному и тому же серверу расположенному за натом!!


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено angra , 31-Май-09 20:42 
Может вместо восклицательных знаков и капса вы все-таки вдумчиво прочитаете мой предыдущий ответ? Если не поможет с первого, попробуйте еще несколько раз. При прочих равных абсолютно фиолетово через какой канал уйдут _исходящие_ соединения. И первая, она же наиболее частая, задача как раз правильно отправить ответы на _входящие_ соединения. И начиная с lartc эта задача подробно разбирается. Может вы конечно какие-то неправильные руководства читали, ну тогда направлю на путь истинный: http://www.opennet.me/docs/RUS/LARTC/

"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено COPOKA , 02-Июн-09 00:01 
>Может вместо восклицательных знаков и капса вы все-таки вдумчиво прочитаете мой предыдущий
>ответ? Если не поможет с первого, попробуйте еще несколько раз. При
>прочих равных абсолютно фиолетово через какой канал уйдут _исходящие_ соединения. И
>первая, она же наиболее частая, задача как раз правильно отправить ответы
>на _входящие_ соединения. И начиная с lartc эта задача подробно разбирается.
>Может вы конечно какие-то неправильные руководства читали, ну тогда направлю на
>путь истинный: http://www.opennet.me/docs/RUS/LARTC/

Огромное вам спасибо!!!  Нарвался на решение проблемы в гугле по зпросу о двух провайдерах. 95% тем и вариантов были неправильные. Спасла тема где описывался процесс с помощью CONNMARK.

З.Ы."При прочих равных абсолютно фиолетово через какой канал уйдут _исходящие_ соединения" я разве утверждал обратное?

З.Ы.Ы. В lartc не нашел правильного решения моей задачи. Может есть ещё способ кроме как с CONNMARK ?  Тыкните пальцем  мне пальцем пожалуйста ибо "4.2. Маршрутизация через несколько каналов/провайдеров."в lartc  заботиться только о исходящих и нет контроля над исходящими.

З.Ы.Ы.Ы.  И ещё раз Вам спасибо за проявленное внимание!   Продолжаю поиски других вариантов решения данного вопроса.Например с помощью тунелий или ещё как нить..


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено angra , 02-Июн-09 01:25 
>заботиться только о исходящих и нет контроля над исходящими.

Объясните мне смысл этой фразы.

В lartc 4.2.1 как раз описывает нужный вам случай, обратите внимание, что там даже про NAT упоминается. Однако, если по каким либо причинам не получается, то работа через connmark вполне кошерный вариант при умеренной нагрузке. В конце, концов его ведь для подобного и придумали :)


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено COPOKA , 02-Июн-09 05:10 
>>заботиться только о исходящих и нет контроля над исходящими.
>
>Объясните мне смысл этой фразы.
>
>В lartc 4.2.1 как раз описывает нужный вам случай, обратите внимание, что
>там даже про NAT упоминается. Однако, если по каким либо причинам
>не получается, то работа через connmark вполне кошерный вариант при умеренной
>нагрузке. В конце, концов его ведь для подобного и придумали :)
>

В lartc 4.2.1  Не катит.

Запрос из инета   -- первый интерфейс роутер  --  WWW сервер


ответ от WWW сервера --- роутер (С КАКОГО ИНТЕРФЕЙСА ОТВЕЧАТЬ???) ---  инет


Соответственно роутер решает эту задачу таблицей маршрутов. В lartc 4.2.1 есть пути до сетей провайдеров и дефаулт роут.  Соответственно при разрешении маршрута к адресу которого нет в сети провайдера, он кинет ответ по дефаултному маршруту. А если запрос пришел не на дефаултный интерфейс?   Собственно эту проблему решил через connmark. Применение которого в lartc  не описано.

Вопрос- есть где lartc  по новее? и желательно на русском.... Конечно я о многом мечтаю. Но и руководство по Iptables  новому тоже неплохо на русском заполучить...


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено reader , 02-Июн-09 08:51 
Вот вы уперлись, что в статьях решается как выпустить клиентов через 2 канала, а у вас входящее соединение, но на самом деле в статьях описываются способы выдергивания определенных пакетов ( не важно на установку соединения они идут или это ответы на пришедшие запросы ) и пропихивание их через определенный провайдерский шлюз.

Что есть у вас. Пакеты приходят, вы в них меняете адрес назначения и пакет идет дальше согласно таблицы маршрутизации и я так понимаю с этим проблем у вас нет. Дальше начинают из локалки приходить ответы и так как маршрутов в таблице маршрутизации к этим адресам нет, то пакеты уходят через дефаултный шлюз. То есть нужно отловить ответы и отправить их через необходимый шлюз, в вашем случае через тот, через который пришел пакет на который и идет ответ. Именно то что и рассматривается в этих статьях. И как их отлавливать? Очевидно что нужно как то маркировать входящие пакеты, но так что бы пакет ушел с машины был обработан на другой и в пришедшем ответе эту метку можно было бы найти. Я предложил как метку использовать разные адреса, хотя можно было бы использовать номера портов.

И получается, что вы видите в чем проблема ( хотя это уже следствие ), но сформулировать правильно вопрос не смогли, а звучать он должен примерно так, как отловить определенные пакеты и отправить их через определенный шлюз провайдера. То что и описывается в статьях про двух провайдеров, а у вас всего лишь частный случай с условием что отлавливаемый пакет должен быть ответом на пакет пришедший через определенный интерфейс.

Как всегда правильно сформулированный вопрос содержит в себе часть ответа.


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено Pahanivo , 30-Май-09 10:38 
>(Я нуб в юниксах, прошу сильно ногами не пинать...)
>
>Вот дома изучаю юникс системы. Поставил себе Fedora 10 как домашний роутер
>для двух провайдеров.

федора это юникс? ))
дальше даже читать не стал )))


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено bill , 30-Май-09 16:43 
>федора это юникс? ))
>дальше даже читать не стал )))

Ха-ха. Фрибсдэшники фанатичные набежали?


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено reader , 30-Май-09 16:54 
были указаны условия, под них и ответ, будут другие условия - будут и другие решения.
при одном внутреннем сервере vpn может и не разумно делать, а при 200-х неразумным станет проброс.
как что читайте о сетевых технологиях и исходя из условий и нюансов выбирайте подходящий для вас.

"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено COPOKA , 02-Июн-09 05:12 
>>(Я нуб в юниксах, прошу сильно ногами не пинать...)
>>
>>Вот дома изучаю юникс системы. Поставил себе Fedora 10 как домашний роутер
>>для двух провайдеров.
>
>федора это юникс? ))
>дальше даже читать не стал )))

Ну говорю  -  учусь ещё "Ж" от "П" не отличаю....   Вы бы рассказал чем отличается юниксы от линуксов и от БСД  или как там...


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено angra , 02-Июн-09 12:48 
>Вы бы рассказал чем отличается юниксы от линуксов и от БСД  или как там...

Неужто в вики всего этого нету?
Если кратко то вопрос разбивается на две части: де-юре и де-факто
Де-юре есть торговая марка Unix(ЕМНИП сейчас принадлежит novell) и есть сертификация unix. Ряд unix-подобных систем ее прошли, например macosx, другие на нее забили, например дистры linux. Те кто не прошли, не могут себя называть unix системами.
Де-факто есть стандарт POSIX, описывающий набор системных вызовов, стандартных утилит и других особенностей, которыми должны обладать ОС. Все unix-like системы ему более-менее соответствуют, но также имеют ряд расширений, которые и различают их между собой. Линукс на данный момент имеет наибольшее количество дополнительных возможностей.


"Доступ к локальным заNATовым серверам c разных внешних IP"
Отправлено COPOKA , 05-Июн-09 04:11 
>[оверквотинг удален]
>Неужто в вики всего этого нету?
>Если кратко то вопрос разбивается на две части: де-юре и де-факто
>Де-юре есть торговая марка Unix(ЕМНИП сейчас принадлежит novell) и есть сертификация unix.
>Ряд unix-подобных систем ее прошли, например macosx, другие на нее забили,
>например дистры linux. Те кто не прошли, не могут себя называть
>unix системами.
>Де-факто есть стандарт POSIX, описывающий набор системных вызовов, стандартных утилит и других
>особенностей, которыми должны обладать ОС. Все unix-like системы ему более-менее соответствуют,
>но также имеют ряд расширений, которые и различают их между собой.
>Линукс на данный момент имеет наибольшее количество дополнительных возможностей.

Не в тему..но чем BSD от Linux  отличаются?