Карта0
Карта1
Карта2
Карта3
Карта4
Карта5
Карта6
Карта7
Карта8
Карта9
Карта10
Карта11
Карта12
Карта13
Карта14
Карта15
Карта16
Карта17
Карта18
Карта19
Карта20
Карта21
Карта22
Карта23
Карта24
Карта25
Карта26
Карта27
Карта28
Карта29
Карта30
Карта31
Карта32
Карта33
Карта34
Карта35
Карта36
Карта37
Карта38
Карта39


Наш форум » Железо и софт. Вопросы и ответы. » Техподдержка » Как свести на одной машине локалки с одинаковыми адресами?

Техподдержка Проблема с компьютером или софтом? Тебе сюда.

Ответ
Старый 31.12.2008, 00:35   #1 (permalink)
Местный
 
Аватар для R_Murdoc
 
Регистрация: 04.09.2008
Адрес: не дом и не улица
Возраст: 32
Сообщений: 303
Репутация: 377
Провайдер: Несколько
За новинки 
Как свести на одной машине локалки с одинаковыми адресами?


Возьмем для примера известную картинку VlaSok:

Фиг с ней, что она устарела - она нужна только в качестве иллюстрации.
Из этой картинки следует, что при одновременном подключении к Спарку и Гаранте оказываются недоступны некоторые адреса - 10.10.*.* и 10.15.*.* либо Гаранты, либо Спарка (как выберет сам пользователь).
Однако!
Представим, что на левом интерфейсе (Гаранта) висит хитрая штука™.
Хитрая штука™ делает вот что: когда ей приходит пакет, например, с диапазона 10.10, она берет и эти 10.10 заменяет, допустим, на 10.21, который везде в данном случае свободен (и так поступает с любыми адресами, которые мы попросим подменить - сугубо по нашим указаниям).
Сам компьютер в результате думает, что ему пришел пакет с гарантовского интерфейса с адресом отправителя 10.21. Он его обрабатывает и отсылает назад (а мы, умные, уже зарание прописали ему в роутинг, что лучший интерфейс для 10.21 - гарантовский). Хитрая штука™ на выходе ловит пакет и проводит над ним обратную операцию - заменяет 10.21 на 10.10 и шлет дальше в сеть.
То есть вроде бы получается такой static NAT наоборот.
Понятно объяснил?

Так вот, как правильно называется эта штука и реализовал ли ее кто-нибудь _под виндой_ программно?
Будут ли под ней работать DC++, локальный трекер и игрушки?
R_Murdoc вне форума   Ответить с цитированием
Старый 31.12.2008, 07:55   #2 (permalink)
Администратор
 
Аватар для papenkin
 
Регистрация: 27.02.2008
Адрес: localhost
Возраст: 28
Сообщений: 1,393
Репутация: 413
Провайдер: Энлинк
Альтруист Отец ресурсов 


R_Murdoc, эта штука надывается статический нат (без наоборот), про винду ничего не скажу, а вот под никсами делается все элементарно. Сам собирал такой девайс, когда нужно было подключить десяток модемов "из коробки" (т.е. у всех одинаковые адреса и пр.).
papenkin вне форума   Ответить с цитированием
Старый 31.12.2008, 12:38   #3 (permalink)
Местный
 
Аватар для VlaSok
 
Регистрация: 16.03.2008
Сообщений: 1,049
Репутация: 569
Провайдер: Мультинекс


R_Murdoc, как сказал papenkin, организовать такой SNAT можно с помощью правил IPTables.
http://ru.wikipedia.org/wiki/Iptables
Настройка межсетевого экрана Iptables
Руководство по iptables (Iptables Tutorial 1.1.19)

Но для этого нужен еще один компьютер с установленным Linux и двумя сетевыми картами (1 смотрит в одну из сетей, 2 подключается к нашему компьютеру). Предположим, что мы ставим этот роутер вместо сетевой карты, которая смотрит в Гаранту, и будем преобразовывать конфликтующие IP адреса для Гаранты (10.10.0.0/15, 10.12.0.0/16, 10.15.0.0/16). Правила для осуществления такого маппинга сетей будут выглядеть следующим образом (предполагаем что диапазоны 10.20.0.0/15, 10.22.0.0/16, 10.25.0.0/16 не будут вызывать конфликта):
Цитата:
iptables -t mangle -A PREROUTING -s 10.10.0.0/15 -j NETMAP --to 10.20.0.0/15
iptables -t mangle -A PREROUTING -s 10.12.0.0/16 -j NETMAP --to 10.22.0.0/16
iptables -t mangle -A PREROUTING -s 10.15.0.0/16 -j NETMAP --to 10.25.0.0/16
Цитата:
iptables -t mangle -A PREROUTING -d 10.20.0.0/15 -j NETMAP --to 10.10.0.0/15
iptables -t mangle -A PREROUTING -d 10.22.0.0/16 -j NETMAP --to 10.12.0.0/16
iptables -t mangle -A PREROUTING -d 10.25.0.0/16 -j NETMAP --to 10.15.0.0/16
Действие NETMAP реализует функцию "1:1 NAT" для целых сетей, чего нет в стандартных действиях SNAT и DNAT.
Iptables Tutorial 1.2.2 - NETMAP target

Необходимо также реализовать маскарадинг, чтобы роутер подменял IP адрес нашего компьютера (в данном примере 192.168.2.2) на свой адрес в Гаранте (в данном примере 10.10.0.2), чтобы был возможен обмен трафиком:
Цитата:
iptables –t nat –A POSTROUTING –s 192.168.2.2 –j SNAT –-to 10.10.0.2
Также необходимо настроить правила по умолчанию и фильтрации трафика в таблице filter.

На роутере нужно добавить стандартные маршруты до подсетей: Маршруты. ВАЖНО !!!, а на компьютере теже маршруты, но вместо 10.10.0.0, 10.12.0.0, 10.15.0.0 ставить 10.20.0.0, 10.22.0.0, 10.25.0.0, а в качестве шлюза - адрес роутера. В итоге наш компьютер будет обмениваться трафиком с Гарантой через роутер и сможет обращаться к адресам 10.10.x.x, 10.12.x.x, 10.15.x.x, которые для него будут выглядеть как 10.20.x.x, 10.22.x.x, 10.25.x.x.

Это примерное описание. Если я в чем-то ошибся, поправьте меня. Было бы здорово увидеть полные правила настройки IPTables для реализации такой схемы. Интересно узнать изменяются ли правила в случае, когда IP адрес самого компьютера принадлежит (в данном примере 10.10.0.2) и не принадлежит конфликтующему диапазону. Также интересно какие правила нужно добавить, чтобы работало перенаправление портов на компьютер (для работы DC++ в активном режиме и других приложений).

Особенно интересно узнать, смогут ли нормально работать с конфликтующими адресами DC++, локальный трекер и игрушки. Ведь по идее при заходе на тот же DC хаб последний возвращает список всех присутствующих и их реальные IP адреса, не зная ничего о наших манипуляциях с роутером. И DC++ клиент будет пытаться соединяться именно с теми адресами, которые дал ему хаб, в том числе и с конфликтующими, не производя замену.

Знающие люди, подскажите!

Последний раз редактировалось VlaSok, 31.12.2008 в 12:44.
VlaSok вне форума   Ответить с цитированием
Старый 31.12.2008, 13:14   #4 (permalink)
Администратор
 
Аватар для papenkin
 
Регистрация: 27.02.2008
Адрес: localhost
Возраст: 28
Сообщений: 1,393
Репутация: 413
Провайдер: Энлинк
Альтруист Отец ресурсов 


VlaSok, не знаю откуда ты все это взял, но одна ГРУБЕЙШАЯ ошибка заставила меня прервать чтение на первой цитате...
Если ты это сам писал, то запомни на всю жизнь: таблица mangle используется ТОЛЬКО для изменения полей TOS и TTL, а также для того, чтобы пометить пакет (MARK). Никаких натов (ни dnat, ни snat, ни masq)!
Нат осуществляется в таблице nat.
Вторая ошибка - использование NETMAP, которое требует сборки ядра с поддержкой NETMAP.

Как правильно и как будет работать напишу у себя в блоге, сейчас времени нету...
Может сам догадаешься? Там не сложно, все в таблице nat, цепочки postrouting и prerouting. Хотя тут лучше использовать двойной нат.
papenkin вне форума   Ответить с цитированием
Старый 31.12.2008, 13:27   #5 (permalink)
Местный
 
Аватар для VlaSok
 
Регистрация: 16.03.2008
Сообщений: 1,049
Репутация: 569
Провайдер: Мультинекс


papenkin, пример взят отсюда:
http://security.maruhn.com/iptables-tutorial/x9940.html

p.s.: обрати внимание на вопросы, которые я задал в конце своего поста
VlaSok вне форума   Ответить с цитированием
Старый 31.12.2008, 13:46   #6 (permalink)
Местный
 
Аватар для R_Murdoc
 
Регистрация: 04.09.2008
Адрес: не дом и не улица
Возраст: 32
Сообщений: 303
Репутация: 377
Провайдер: Несколько
За новинки 


Цитата:
Сообщение от VlaSok Посмотреть сообщение
R_Murdoc, как сказал papenkin, организовать такой SNAT можно с помощью правил IPTables.
К сожалению, в винде IPTables нету. :)
Да и отдельную машину для такого собирать, сам понимаешь...
Максимум, что можно сделать без ощутимых ударов по бюджету - переучить какой-нибудь дешевый роутер это делать (это уж точно без меня :). Минус - опять-таки будет тормозить.

Цитата:
Сообщение от VlaSok Посмотреть сообщение
Интересно узнать изменяются ли правила в случае, когда IP адрес самого компьютера принадлежит (в данном примере 10.10.0.2) и не принадлежит конфликтующему диапазону.
Вот, кстати, да.

Цитата:
Сообщение от VlaSok Посмотреть сообщение
Особенно интересно узнать, смогут ли нормально работать с конфликтующими адресами DC++, локальный трекер и игрушки. Ведь по идее при заходе на тот же DC хаб последний возвращает список всех присутствующих и их реальные IP адреса, не зная ничего о наших манипуляциях с роутером. И DC++ клиент будет пытаться соединяться именно с теми адресами, которые дал ему хаб, в том числе и с конфликтующими, не производя замену.
Если клиент DC++ попытается полезть куда-нибудь по реальному адресу, полученному от хаба Гаранты, то неминуемо попадет в Спарк (в нашем примере).
То есть, получается, что речь идет уже максимум о пассивном режиме.
Другое дело, если бы все клиенты из списка пользователей отослали нашему клиенту по пакету, в котором бы просто подписались - вот тогда наш клиент бы точно знал, что и где.
Игрушки, кажется, должны работать, потому что они общаются только с сервером.
R_Murdoc вне форума   Ответить с цитированием
Старый 31.12.2008, 17:56   #7 (permalink)
Местный
 
Аватар для R_Murdoc
 
Регистрация: 04.09.2008
Адрес: не дом и не улица
Возраст: 32
Сообщений: 303
Репутация: 377
Провайдер: Несколько
За новинки 


Цитата:
Сообщение от papenkin Посмотреть сообщение
R_Murdoc, эта штука надывается статический нат (без наоборот), про винду ничего не скажу, а вот под никсами делается все элементарно. Сам собирал такой девайс, когда нужно было подключить десяток модемов "из коробки" (т.е. у всех одинаковые адреса и пр.).
Поскольку под виндой этого всего нет, а отдельный комп только для того, чтоб свести Гаранту со Спарком (или с другим провайдером), - это слишком жирно (да и линуха для меня не вариант, нет времени с ними возиться - я совсем в другой области работаю), возможно ли, хотя бы в теории, научить какой-нибудь дешевый роутер это делать? Можно даже оторвать роутеру все остальное - лишь бы он транслировал адреса...
R_Murdoc вне форума   Ответить с цитированием
Старый 01.01.2009, 02:32   #8 (permalink)
Местный
 
Аватар для Юрич
 
Регистрация: 29.01.2007
Возраст: 45
Сообщений: 155
Репутация: 41
Провайдер: ЭР-Телеком
Старожил 


"отдельный комп" можно заюзать из виртуальной машины
Юрич вне форума   Ответить с цитированием
Старый 01.01.2009, 03:39   #9 (permalink)
Местный
 
Аватар для R_Murdoc
 
Регистрация: 04.09.2008
Адрес: не дом и не улица
Возраст: 32
Сообщений: 303
Репутация: 377
Провайдер: Несколько
За новинки 


Цитата:
Сообщение от Юрич Посмотреть сообщение
"отдельный комп" можно заюзать из виртуальной машины
Гхм!.. Не думал о таком варианте.
Ну это опять же означает линуха, получается.
Да и скорость...

Тоже дома сидишь?
R_Murdoc вне форума   Ответить с цитированием
Старый 10.01.2009, 22:58   #10 (permalink)
Местный
 
Аватар для VlaSok
 
Регистрация: 16.03.2008
Сообщений: 1,049
Репутация: 569
Провайдер: Мультинекс


А вопрос так и не был решен. Может кто-нибудь что-то сказать по этому поводу?
VlaSok вне форума   Ответить с цитированием
Ответ




Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Вкл.




При копировании информации ссылка на источник обязательна!

Часовой пояс GMT +4, время: 08:04.
vBulletin® Version 3.8.2.Copyright ©2000 - 2012, Jelsoft Enterprises Ltd. Перевод: zCarot
Template-Modifications by TMS