LINUX.ORG.RU
ФорумAdmin

Проблемы с туннелем

 ,


0

1

Ситуация следующая: Есть 2 железки с сильно урезанной гентой (новые пакеты собрать не факт что получится ) у каждой из которых есть 2 интерфейса: wifi и ethernet. eth'и торчат в свои локальные сетки, надо эти сетки повязать через gre(ipip) туннель через wifi.

поднимаю туннели на обоих концах

1

iptunnel add tunl1 mode gre remote 192.168.10.2 local 192.168.10.1 ttl 255

ifconfig tunl1 up

ifconfig tunl1 192.168.1.249

route add -net 192.168.2.0/24 dev tunl1

2

iptunnel add tunl1 mode gre remote 192.168.10.1 local 192.168.10.2 ttl 255

ifconfig tunl1 up

ifconfig tunl1 192.168.2.248

route add -net 192.168.1.0/24 dev tunl1

в итоге я пингую с машин в сети 1 ethernet железки 2 и наоборот, а дальше никак - пинг между машинами разных сетей не проходит. пакеты затыкаются на eth интерфейсе удаленной железяки. подскажите, где я налажал?

Потому что ifconfig выставит /24 маску для сети класса-C, а не /32. Можно попробовать другой фокус. Прямо указать в первом 192.168.2.248, а во втором 10.68.1.249, route выкинуть, да и up можно приписать ко второму ifconfig, а первый выкинуть.

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

Точно /32? Странно, но тогда должно работать. Прямо прописать - это грязный хак, работает только в Linux, так что раз не поняли, то и забейте. Хак основан на том, что в маршрутизации локальный адрес не участвует совсем, по сути вам же нужно указать маршрут к удалённой сети через интерфейс, адрес у point-to-point интерфейсов не важен. А, даже не так. Наоборот получается ещё хуже - приходится использовать совсем левые сети. Так что и попробуйте совсем другую левую сеть для tun.

vodz ★★★★★ ()
Последнее исправление: vodz (всего исправлений: 1)

в итоге я пингую с машин в сети 1 ethernet железки 2 и наоборот, а дальше никак

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

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

еще непонятный момент - в чем великий смысл вешанья на концы туннеля адресов из разных сетей да еще с маской /32 каждый. point-to-point, конечно, все стерпит, но вообще-то туннель - это транзитная подсеть и логично на его концы повесить адреса из одной подсети. Ну с маской /30, чтобы не транжирить.

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

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

но вообще-то туннель - это транзитная подсеть

Это не совсем истина, а просто проявление лени в стеке. Как уже говорил тут ранее, для Linux это вообще не надо, стек сделан мощно, просто указываете удалённую сеть с маской, роут поднимается автоматически без кривых скриптов.

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

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

необходимо получить доступ виндовых машин одной сети к виндовым машинам второй сети

есть 2 сети:

одна 192.168.1.0/24, вторая 192.168.2.0/24

в каждой сети есть шлюз на генте: 1 шлюз eth1 192.168.1.249 торчит в сеть, wlan0 сейчас 10.0.0.1

eth0      Link encap:Ethernet  HWaddr 00:fe:c0:a9:e9:07  
          inet addr:192.168.1.249  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:513 errors:0 dropped:0 overruns:0 frame:0
          TX packets:354 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:49306 (48.1 KiB)  TX bytes:46608 (45.5 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:456 (456.0 B)  TX bytes:456 (456.0 B)

tunl1     Link encap:UNSPEC  HWaddr 0A-00-00-01-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:192.168.1.249  P-t-P:192.168.1.249  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP  MTU:1476  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2224 (2.1 KiB)  TX bytes:480 (480.0 B)

wlan0     Link encap:Ethernet  HWaddr 00:19:94:1f:a3:6f  
          inet addr:10.0.0.1  Bcast:10.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:170 errors:0 dropped:0 overruns:0 frame:0
          TX packets:243 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:26320 (25.7 KiB)  TX bytes:28672 (28.0 KiB)

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 tunl1
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 wlan0
127.0.0.0       127.0.0.1       255.0.0.0       UG    0      0        0 lo

2 шлюз eth1 192.168.2.248 торчит в сеть, wlan0 сейчас 10.0.0.2

eth0      Link encap:Ethernet  HWaddr 00:fe:c0:00:c5:54  
          inet addr:192.168.2.248  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:770 errors:0 dropped:0 overruns:0 frame:0
          TX packets:341 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:85294 (83.2 KiB)  TX bytes:79982 (78.1 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:64 errors:0 dropped:0 overruns:0 frame:0
          TX packets:64 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:13968 (13.6 KiB)  TX bytes:13968 (13.6 KiB)

tunl1     Link encap:UNSPEC  HWaddr 0A-00-00-02-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:192.168.2.248  P-t-P:192.168.2.248  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP  MTU:1476  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:420 (420.0 B)  TX bytes:240 (240.0 B)

wlan0     Link encap:Ethernet  HWaddr 00:19:94:25:88:b5  
          inet addr:10.0.0.2  Bcast:10.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:233 errors:0 dropped:0 overruns:0 frame:0
          TX packets:223 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:23566 (23.0 KiB)  TX bytes:30288 (29.5 KiB)

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 tunl1
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 wlan0
127.0.0.0       127.0.0.1       255.0.0.0       UG    0      0        0 lo

в итоге с настройками, которые я указал в начале: с виндовой машины из сети 1 пингуется eth интерфейс шлюза 2 и наоборот. но из сети 1 не пингуются машины в сети 2.

я в маршрутизации не силен, подскажите, если есть такая возможность, вариант объединения этих сетей через вайфай

всем спасибо за советы

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

А зачем использовать одинаковые адреса на туннеле и eth0 ? В данном случае для tun1 вообще адресов не нужно - это же p2p интерфейс. remote/local/ttl сконфигурил и «ip tu add tun1 local 10.0.0.x remote 10.0.0.y ttl 255 && ip li set tun1 up»

Маршруты в удаленную сеть прописываются просто через устройство tun1

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

Не совсем понятно зачем этот туннель. Достаточно просто маршруты прописать.

vel ★★★★★ ()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от last_zombie

Выше vel все правильно описал.

с виндовой машины из сети 1 пингуется eth интерфейс шлюза 2 и наоборот. но из сети 1 не пингуются машины в сети 2.

Дополню, не забываем про виндовые fw/антивири они по умолчанию не дают доступ из разных подсетей.

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

Это не совсем истина, а просто проявление лени в стеке.

Это вопрос философский. Если мы рассматриваем IP-сети, объединенные маршрутизаторами, то туннель (как любое P-t-P соединие) - вырожденный случай подсети между маршрутизаторами. Можно, воспользовавшись возможностями IP-стека конкретной системы (Linix, IOS (в смысле цискиной) и т.п.) проявить администраторскую лень и не назначать на него адреса, а писать маршрут прямо через интерфейс. А можно назначить адреса и не полениться прописать маршруты. В первом случае писать меньше маршрутов, во втором случае - проще диагностика сети (если сеть не из двух связанных куском провода маршрутизаторов, а посложнее).

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

Это вопрос философский.

Мне это больше напоминает гениальное: «как в армии, пусть безобразно, но единообразно». Ведь когда-то Linux не умел unnumbered, а cisco умело, сейчас наоборот, не возможно отказаться от левой сети, не участвующей в маршрутизации у тунелей в cisco, а в Linux-е — можно. С диагностикой никаких проблем, так как туннели прокидывают либо на немаршрутизируемые напрямую сети либо увидеть хопы, а не прямое соединение, не составляет труда.

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

в сети 1 (192.168.1.0/24) на всех компьютерах пишите маршрут на 192.168.2.0/24 через 192.168.1.249. в сети 2 (192.168.2.0/24) на всех компьютерах пишите маршрут на 192.168.1.0/24 через 192.168.2.248.

на шлюзе 1 пишите маршрут на 192.168.2.0/24 через 10.0.0.2 на шлюзе 2 пишите маршрут на 192.168.1.0/24 через 10.0.0.1

всё. никаких туннелей в данном случае не надо. все адреса взяты из вашей конфигурации.

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

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

Мне это больше напоминает гениальное: «как в армии, пусть безобразно, но единообразно».

Совершенно верно. Принцип из анекдота, но бывает полезным. При эксплуатации больших и критичных систем часто во главу угла приходится ставить удобство администрирования. Даже если если приводит к какой-нибудь неоптимальности в конфигурации. Вы, видимо, просто не сталкивались.

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

удобство администрирования

в первую очередь возникает автоматически, когда либо выкидывают лишний хлам, либо спец решениями, пусть и дорогими, но скрывающими этот хлам в себе, например, mpls, vxlan, отказ от тунелей покупкой кучи адресов PI и прочих собственных колец по миру.

Вы, видимо, просто не сталкивались.

Это вы для поддержания марки ЛОРа произнесли? Обязательно надо ляпнуть что-то не по делу и мимо...

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