LINUX.ORG.RU
ФорумAdmin

нестандартный роутинг или туннели


0

0

Помогите, плз, с настройкой роутинга.

Есть два компа, находящихся в разных сетях
10.0.0.10, у которого (default gw) указан как 10.0.0.1
20.0.0.20, у него default gw 20.0.0.1

Задача - видеть подсеть 30.0.0.0, которая находится за 10.0.0.10 (у 10.0.0.10 есть второй интерфейс 30.0.0.10)

Манипулировать можно лишь на 10.0.0.10 и 20.0.0.20 (их шлюзы, 10.0.0.1 и 20.0.0.1 мне недоступны)


Вот примерно так все выглядит:
   сеть            роутер1     gw for 1    internet            
30.0.0.0/24 ---- 10.0.0.10 --- 10.0.0.1 ==== [ ] ==== 20.0.0.1 --- 20.0.0.20


Проблема в том, что за хостом 20.0.0.20 нет никакой подсети, поэтому не получается делать туннели (или я недопонял идею туннеля)

Пробовал обычный GRE (по howto с lartc.org)

со стороны 10.0.0.10
ip tunnel add tun1 mode gre remote 20.0.0.20 local 10.0.0.10 ttl 255
ip link set tun1 up
ip addr add 10.0.0.10 dev tun1
ip route add 20.0.0.20/32 dev tun1


со стороны 20.0.0.20
ip tunnel add tun1 mode gre remote 10.0.0.20 local 20.0.0.20 ttl 255
ip link set tun1 up
ip addr add 20.0.0.20 dev tun1
ip route add 30.0.0.0/24 dev tun1


Засада в том, что на 10.0.0.10 прописывается роутинг до 20.0.0.20 на tun1, но хост 20.0.0.20 сам же является терминатором туннеля.
Из-за этого конструкция не работает :(

Ну прописывание напрямую, т.е.
route add -net 30.0.0.0/24 gw 10.0.0.10 тоже не работает, т.к. (видимо) гейтвей должен находится в одной физической подсети c 10.0.0.10 (а точнее, гейтвей должен быть достижим напрямую через любой из девайсов, указанных в ifconfig).

В общем, я где то ошибаюсь, или чего то не вижу.
Просвятите :)


Уточню задачу. Надо увидеть подсеть 30.0.0.0 с машины 20.0.0.20. Подсеть находится за 10.0.0.10 (у 10.0.0.10 есть второй интерфейс 30.0.0.10)

eightn
() автор топика
Ответ на: комментарий от eightn

А чего все молчали то? :)

Решение оказалось простым - достаточно поднять алиас (например 20.0.1.10) на сетевом интерфейсе машины 30.0.0.10 и делать туннель между алиасом и удаленной сетью 30.0.0.0

eightn
() автор топика

Не правильное решение... или вернее некарасивое....
У тебя получается что адрес тунельного интерфейса = адрес интерфейса на def gw. (получ. что 2 интерфейса на одном роутере имеют один и тотже ip) для процесса маршрутизации (который на сетевом уровне ) туннельный интерфейс (который на канальном) выглядит как обычный ничем не отличимый от других интерфейсов.

для туннелей обычно выделяют отдельную подсеть (напр.. 
192.168.0.0/30) 192.168.0.1 на стороне 10.0.0.10
                192.168.0.2 на стороне 20.0.0.20


    сеть        роутер1     gw for 1                            хост2
30.0.0.0/24 -- 10.0.0.10 -- 10.0.0.1 ==[inet]== 20.0.0.1 --- 20.0.0.20
            192.168.0.1 ===========тунель =================192.168.0.2


конфиг на роутер1
ip tunnel add tun1 mode gre remote 20.0.0.20 local 10.0.0.10 ttl 255
ip link set tun1 up
ip addr add 192.168.0.1/30 dev tun1
ip route add 20.0.0.20/32 via 192.168.0.2

конфиг на xocт2
ip tunnel add tun1 mode gre remote 10.0.0.20 local 20.0.0.20 ttl 255
ip link set tun1 up
ip addr add 192.168.0.2/30 dev tun1
ip route add 30.0.0.0/24 via 192.168.0.1

не проверял, но должно работать....

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

ну или тот вариант с аллиасом... только для этого сущесвует loopback интерфейсы...

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






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

Т.е. если адрес не светится в сети, его лучше вешать алиасом на lo интерфейс? Действительно логично, не подумал.

За остальную инфу спасибо, информация мне помогла.

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