Роутинг, бриджинг, tun, tap, ovpn и много других страшных слов.

Схема сети выглядит примерно так:

[Ноут]<->[Домашний сервер] <- ovpn -> [VPS] <-> интернет
                                             | ovpn (tap) -> клиент1
                                             | ovpn (tun) -> клиент2

Все ходят в интернет через VPS.

VPN, соединяющий HS(Домашний сервер) и VPS: 10.101.101.0/24
Интерфейс в обоих случаях называется tap6

VPN, соединяющий VPS и клиента: 10.101.102.0.24
Интерфейс называется tun0

На HS при подъеме tap6:
/bin/ip route add 10.101.102.0/24 dev tap6

Gateway не указан, потому как я не знаю как это сделать:

HS# ip route add 10.101.102.0/24 via 10.101.101.1 dev tap6
RTNETLINK answers: Network is unreachable

Но хватает и просто указания интерфейса.

Проблема 1.

Почему-то HS отказался пропускать пакеты из интернета обратно к ноуту. Методом мучительного тыка выяснил, что дело в rp_filter. Проблема решилась его отключением на HS tap6.

Вопрос: почему проблема вообще возникла? Я могу запросить страницу с HS через VPS и получить ответ, но если HS выступает в роли роутера, то syn-запрос уходит, подтверждение возвращается и не идет в домашнюю сеть пока не будет убран rp_filter. Правильно ли выключать в таком случае rp_filter? Можно ли включить интерфейс tap6 ovpn в мост с интерфейсами локальной сети и как с этим будет разбираться ovpn, который, вроде как, должен назначать ему ip-адрес?

Проблема 2.

Если клиент, подключается к VPS через tun (на андроиде tap не работает), то не может добраться ни до каких ресурсов HS.
Запрос доходит и не возвращается, как если бы роутинг не работал. Если включить arp_proxy на tap6 VPS, то все начинает работать.

# route
...
10.101.102.0    0.0.0.0         255.255.255.0   U     0      0        0 tap6

При попытке пинговать до включения arp_proxy на интерфейсе tap6 VPS:

HS# ping 10.101.102.6
From 10.101.101.2: icmp_seq=1 Destination Host Unreachable

10.101.101.2 - это ip tap6 у HS, т.е. запрос как бы добрался до tap6.

tcpdump на tap6 VPS показал запросы вида:
ARP, Request who-has 10.101.102.6 tell 10.101.101.2, length 28

Но если пинговать клиента прямо с VPS, то все в порядке:

VPS# ping 10.101.102.6
64 bytes from 10.101.102.6: icmp_seq=1 ttl=64 time=233 ms

При включении arp_proxy для VPS tap6 - все тут же начинает работать, но везде предупреждают, что так лучше не делать.

Вероятно проблема связана с роутингом - HS не может найти 10.101.102.6 и рассылает ARP-запросы по всем интерфейсам. При включенном arp_proxy он получает ответ вида
10.101.102.6 at ************ [ether] on tap6 и после этого уже спокойно шлет все в tap6.

iptables точно ни при чем.

Похоже, что существует какие-то правила из-за которых разные сетевые интерфейсы не могут просто передавать пакеты друг другу, согласно таблице роутинга. Но я их не знаю.
Везде рекомендуют объединять нужные интерфейсы в мост, но я не представляю как это сделать с tun/tap, да и не нравится мне это решение.

Если кто-то с этим уже сталкивался, пожалуйста, расскажите об особенностях роутинга, настройке областей видимости (и вообще, важны ли они тут), работе rp_filter вообще и марсианских адресах в частности, допустимости использования arp_proxy и опасностях с этим связанных и о возможности как-то засунуть в мост tun (если она вообще есть).
-----

UPDATE: gateway можно указать, если делать это после соединения. Поскольку у ovpn нет post-up, то добавил в ovpn route-up вызов скрипта с &, в котором выставлен sleep 1, а потом уже роутинг. В документации к ovpn сказано, что такая ситуация возможна и для ее устранения можно в конфиге специально указать паузу в секундах.

С указанием GW роутинг сразу заработал. Если я правильно понял, то когда GW не указан, то отправляется ARP-запрос на интерфейс с целью выяснить, куда же все-таки доставлять.
Но и без указания GW все иногда работает. Например, клиент 10.101.102.6 мог соединяться с виртуалкой на HS и после этого его можно было даже пинговать.

В общем, пожалуйста, если кто в теме - раскройте тайну, как же работает ARP, когда, куда и при каких условиях посылаются запросы, формируется ли таблица без запросов (на основе форвардинга проходящих пакетов, например), и так далее.

sysctl -a | grep

sysctl -a | grep net.ipv4.ip_forward
default routing - ip route add default via GW dev ETHX

Ну надо бы начать отсюда,

Ну логично бы начать отсюда, но если это еще сложно, то может отсюда (классика! например, вот тут есть ответ на твой вопрос по ARP), потом и досюда доберешься... :)

Надеюсь тогда не будешь повторять такие глупости: "...Везде рекомендуют объединять нужные интерфейсы в мост..." :)

Общая отсылка к вики, общая

Общая отсылка к вики, общая отсылка к видеокурсам Cisco CCNA, конкретная отсылка к видео, где десять минут разжевывается один простой пример ARP-запроса и нет ни единого слова про марсианские адреса, arp_proxy и подводные камни. Итого - три промаха. Очень жаль.

100$ за сделать и 2000$ за

100$ за сделать и 2000$ за рассказать преподом ( 40 ак. часов ), что сделал.

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

.

slepnoga написал(а):
100$ за сделать и 2000$ за рассказать преподом ( 40 ак. часов ), что сделал.

И OVER 100500, причём не виртуальных знаков условной ценности, а вполне материальных золотых червонцев, с ноги, если в его рассказе встретятся перлы типа виденного как-то в учебнике (авторы которого рассказывая о достоинствах пакетной коммутации предлагали в паузы голосового (!) канала втыкать потоковое видео (!!!)).

:wq
--
Live free or die

На паперти не подаю, проходи

На паперти не подаю, проходи дальше.

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

.

slepnoga написал(а):
На паперти не подаю, проходи дальше.

Привычная в исполнении ноги сцена: голый король на троне, распираемый от гордости за выделку своего одеяния.

:wq
--
Live free or die

Короля то можно и приодеть, а

Короля то можно и приодеть, а вот горе от ума - навсегда ;)

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

какой вопрос, такой и ответ!

Hellsy22 написал(а):
Общая отсылка к вики, общая отсылка к видеокурсам Cisco CCNA, конкретная отсылка к видео, где десять минут разжевывается один простой пример ARP-запроса и нет ни единого слова про марсианские адреса, arp_proxy и подводные камни. Итого - три промаха. Очень жаль.

Пардон, какой вопрос, такой и ответ!

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

Извиняйте, если мы чем обидели, - мы сами не местные, телепатией не владеем...

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".