Официальный сайт студ.городка НГТУ
Software » как объеденить две сети, использующие одинаковые диапазоны IP 

#1  02.12.06 00:43

Max
Профиль

как объеденить две сети, использующие одинаковые диапазоны IP

Часто встречается ситуация, что две локальных сети хотят объедениться, но они обе используют одинаковые диапазоны IP. Как выйти из этой ситуации, не заставляя всех пользователей менять адреса? В интернете попался один мануаль, где категорично утверждается, что для этого нужно 2 сервера... вдаваться в подробности не буду, когда я задался этой проблемой, такое решение мне тоже казалось простым (хотя на самом деле там тоже все довольно заковыристо). Но удалось решить эту проблему иначе.

Предположим, что у нас сети А и В используют диапазон 192.168.0.0/16, и между ними стоит наш роутер.
Предлагается чтобы юзеры сети А ходили на диапазон 10.55.0.0/16 и попадали на компы сети В. А пользователи сети В ходили на диапазон 10.56.0.0/16 и попадали на компьютеры сети А. Если в обеих сетях использутеся DNS, то для "соседней" сети можно даже делать отдельный view с подмененными адресами, и пользователи обеих сетей будут ходить друг к другу по именам машин, совершенно не испытывая затруднений.
Итак, нам потребуется Linux, iptables,iproute2.
Полагаем что сеть А подключена через eth0, а сеть B подключена через eth1
Для понимания добавим в /etc/iproute2/rt_tables строчки:

Код::

101 to_netA
102 to_netB

это будут таблички, в которых указано, куда идти чтобы попасть в сеть А и куда идти чтобы попасть в сеть В.
выполняем

Код::

ip route add dev eth0 table to_netA
ip route add dev eth1 table to_netB

то есть добавим в таблички дефолтовые маршруты к сети А и сети В. Если они доступны не напрямую, то добавим маршруты через маршрутизаторы (вообще-то я именно так пробовал делать)

Код::

ip route add via IP_маршрутизатора_который_знает_как_попасть_в_сеть_А table to_netA
ip route add via IP_маршрутизатора_который_знает_как_попасть_в_сеть_B table to_netB

это заготовочка, далее будет понятно, зачем

теперь сделаем SNAT и DNAT для адресов таким образом из сети А 192.168.0.0/16 мы идем в сеть 10.55.0.0/16, а хотим попасть на другие 192.168.0.0
поэтому когда входим в eth0:

Код::

iptables -t nat -A PREROUTING  -i eth0 -d 10.55.0.0/16   -j NETMAP --to 192.168.0.0/16

а когда мы выходим из eth1, хотим чтобы сеть В думала, что мы пришли из 10.56.0.0/16
поэтому:

Код::

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.0.0/16 -j NETMAP --to 10.56.0.0/16

это у нас сеть А спокойно (не учитывая кое какого ньюанса) ходит в сеть В, идя на адреса 10.55, причем из сети В все думают, что к ним зашли с адресов 10.56 :-)

аналогично сделаем для сети В

Код::

iptables -t nat -A PREROUTING  -i eth1 -d 10.56.0.0/16   -j NETMAP --to 192.168.0.0/16
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/16 -j NETMAP --to 10.55.0.0/16

А теперь о нашей заготовочке
Все было бы прекрасно, если бы пакеты после DNAT в роутере не оказывались с адресом отправителя 192.168/16 и с адресом получаетля тоже 192.168/16. (адрес отправителя еще не заменился, это происходит на выходе, в POSTROUTING, а адрес получателя с 10.5х.0.0/16 уже подменился DNAT-ом в цепочке PREROUTING)  В обычном случае получилась бы билибирда, роутер "не знает" куда маршрутизировать такие пакеты. Тут мы проделываем финт ушами, а точнее iproute-ом.

Код::

ip rule add iif eth0 to 192.168.0.0/16  lookup to_netB
ip rule add iif eth1 to 192.168.0.0/16  lookup to_netA

то есть, иными словами, то что пришло из сети А по любому направлялось в сеть В, и наоборот, иначе бы в роутер не попало.
Осталось прописать роутер либо дефолтом для обоих сетей, либо маршруты до 10.55 и 10.56 для сетей А и В соответственно через этот роутер.
Вуаля, теперь имея два одинаковых адресных пространства можно почти без проблем ходить из одной сети в другую. За  исключением тех протоколов конечно, которые не поддаются NATу.

P.S. если в сетях А и В есть еще и не пересекающиеся диапазоны, кроме 192.168 (например в А 10.33.10.0/24, а в В 172.28.11.0/24) то все будет тоже замечательно работать, только нужно и о этих сетей кинуть маршрут через роутер. При этом подмена непересекающихся адресов происходить не будет.

Offline

#2  04.12.06 10:52

Re: как объеденить две сети, использующие одинаковые диапазоны IP

Спасибо, интересная информация.

Offline

Software » как объеденить две сети, использующие одинаковые диапазоны IP 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.039 сек.
Выполнено 11 запросов.