LINUX.ORG.RU
ФорумAdmin

Таблица маршрутизации


0

0

Имеется:
сеть С1: 192.168.1.0/24
сеть С2: 193.168.1.0/24
VPN сеть В: 10.10.0.0/24

маршрутизатор М1: 192.168.1.1
маршрутизатор М2: 193.168.1.1

Маршрутизатор М1 по совместительству является ВПН-сервером 10.10.0.1, а М2 — клиентом 10.10.0.2.

После установления ВПН соединения на М1 следующая таблица маршрутов:

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
yy.y.yyy.yyy    0.0.0.0         255.255.255.240 U     0      0        0 eth0
10.10.0.0       10.10.0.1       255.255.255.0   UG    0      0        0 tap0
10.10.0.0       0.0.0.0         255.255.255.0   U     0      0        0 tap0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
127.0.0.0       127.0.0.1       255.0.0.0       UG    0      0        0 lo
0.0.0.0         xx.x.xxx.xxx    0.0.0.0         UG    3      0        0 eth0
0.0.0.0         192.168.1.254   0.0.0.0         UG    4      0        0 eth1

На М2:

 route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
193.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.1.0     10.10.0.1       255.255.255.0   UG    0      0        0 tap0
10.10.0.0       10.10.0.1       255.255.255.0   UG    0      0        0 tap0
10.10.0.0       0.0.0.0         255.255.255.0   U     0      0        0 tap0
172.16.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
127.0.0.0       127.0.0.1       255.0.0.0       UG    0      0        0 lo
0.0.0.0         172.16.0.1      0.0.0.0         UG    2      0        0 eth0

Итак, при таком положении вещей, все ресурсы сети С1 доступны с М2. Разумеется, на компьютерах в С1 шлюзом по умолчанию является М1. 
Но когда я пытаюсь получить с компьютера из С2 доступ к С1, то ничего не выходит. 
Перепробовал всякие варианты маршрутов как на М1, так и на М2. Чувствую, тут все достаточно просто, но в упор не вижу, что именно.

Какого маршрута и где не хватает, чтобы смотреть ресурсы С1 из С2, при условии, что на компьютерах в С1 указан дефолтным маршрутизатор 
М1, а в С2 — М2?

Сетку 193.168.1.0/24 зря взяли под LAN (если, конечно, это не ваши купленные адреса). Уж лучше 192.168.2.0/24... ну да Бог с ней.

Итак, маленький ликбез для понимания происходящего. Роутинг - двунаправленный процесс. Давайте проследим пакет с М2 на один из хостов в С1:
1) Уходит с М2 на С1. Так как есть запись
92.168.1.0 10.10.0.1 255.255.255.0 UG 0 0 0 tap0
то src пакета устанавливается как 10.10.0.2.
2) пакет летит в туннеле к М1. По прибытии на М1 согласно маршруту
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
перенаправляется в eth1 (куда-то, где С1)
3) Где-то там в С1 пакет доходит до получателя. На данном этапе у пакета SRC IP = 10.10.0.2 (см. первый пункт)

Далее ответ на пакет. Проследим обратный путь:
1) Отправляем пакет с С1 на М2. SRC IP = 192.168.1.111, например, а DST IP=10.10.0.2. Согласно своей таблицы маршрутизации пакет идёт на default gw (то есть на М1)
2) Придя на М1 пакет согласно маршруту
10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tap0
пускается внутрь туннеля.
3) на другом конце туннеля пакет поджидает М2. У пакета, как помним, DST IP = 10.10.0.2 То есть путешествие закончилось.

Тут всё понятно.

Теперь проследим такую же схему движения пакета с С2 на С1:
1) Пакет отправляется с С2, SRC IP = 193.168.1.222, например, DST IP=192.168.1.111. Согласно своей таблицы маршрутизации, хост С2 посылает пакет на М2.
2) М2, согласно маршруту
92.168.1.0 10.10.0.1 255.255.255.0 UG 0 0 0 tap0
пересылает пакет на М1.
3) М1 согласно маршруту
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
пересылает пакет на С1.

То есть пакеты с сети С2 на сеть С1 доходят.

Теперь проследим ответный пакет:
1) С хоста из сети С1 уходит пакет на С2 с ттх: SRC IP = 192.168.1.111; DST IP = 193.168.1.222. Согласно таблицы маршрутизации, попадает на М1
2) М1 смотрит свою таблицу маршрутизации и видит... да ничего он не видит. Поэтому М1 шлёт пакет дальше через свой default gw. То есть дальше пакет улетает через xx.x.xxx.xxx на просторы Инета.

Вывод: не хватает маршрута, который заруливал бы пакеты на сеть 193.168.1.0/24 через dev tap0 (или gw 10.10.0.2). Либо заНАТить С2.

P.S. Советую принять на вооружение такой метод мысленного слежения за пакетом/откликом (вплоть до рисования на бумажке) - прочищает мозги и улучшает понимание самых зубодробительных схем маршрутизации.

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

Блин, фиксинг:
- 92.168.1.0 10.10.0.1 255.255.255.0 UG 0 0 0 tap0
+ 192.168.1.0 10.10.0.1 255.255.255.0 UG 0 0 0 tap0

- Вывод: не хватает маршрута,
+ Вывод: не хватает маршрута на М1,

- Либо заНАТить С2.
+ Либо заНАТить С2 на M2 при адресе получателя 192.168.1.0/24

Slavaz ★★★★★
()
Ответ на: комментарий от Slavaz

Slavaz, большое спасибо за разъяснение.

HolyBoy
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.