Доброго всем дня.
Ситуация такая:
Есть сервер с внешним белым адресом (пусть будет 2.3.4.5). На нем я поднимаю tun интерфейс (пусть будет tunS). Этот интерфейс имеет адрес 10.0.0.1
Подключаются к 2.3.4.5 клиенты и каждому я выдаю ip адрес из заданного интервала (192.168.1.2-192.168.1.100 с маской в 24 бита).
Теперь клиент.
Подключается, регистрируется и получает адрес, например 192.168.0.2/24. У клиента тоже есть tun (пусть будет tunC) интерфейс, которому я назначаю этот адрес и маску. + я добавляю маршрут на 10.0.0.1 на этот девайс «route add -host 10.0.0.1 dev tunC»
Все кажется вполне работает. Клиент видит сервер, может сходить на его ресурсы и тд.
Но клиенты не видят друг друга.
Если я не сервере добавлю маршрут «route add -net 192.168.1.0/24 dev tunS» то все друг друга начинают видеть, я могу с одного клиента увидеть файлы другого и тд.
Но при пинге я получаю примерно следующее:
$ ping 192.168.1.3
PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
64 bytes from 192.168.1.3: icmp_seq=1 ttl=63 time=112 ms
From 10.0.0.1: icmp_seq=2 Redirect Host(New nexthop: 192.168.1.3)
64 bytes from 192.168.1.3: icmp_seq=2 ttl=63 time=101 ms
From 10.0.0.1: icmp_seq=3 Redirect Host(New nexthop: 192.168.1.3)
64 bytes from 192.168.1.3: icmp_seq=3 ttl=63 time=100 ms
Если серверу на tunS повесить адрес из этого же диапазона (например 192.168.1.1), то ситуация не меняется.
Что вполне, мне кажется, логичным. Ошибка пропадает, если я клиентам не прописывают маршрут на 10.0.0.1. Понятно, что при этом я не вижу сервер.
Так вот где б почитать как правильно сделать подобную схему (объединения клиентов в одну сеть), чтоб они и друг друга видели и видели сервер?