Назад | Перейти на главную страницу

Зачем нам нужен физический интерфейс LAN, соединенный с интерфейсом OpenVPN TAP, чтобы получить работоспособный OpenVPN в режиме моста?

Здесь у меня есть несколько (возможно, немного разные) вопросы, но связанные друг с другом, поэтому я предпочел задать их в одном вопросе.

Я пытался разрешить своим клиентам OpenVPN (OpenVPN настроен в режиме моста) подключаться к контейнерам Docker.
Как известно, все контейнеры Docker связаны друг с другом через мост (docker0 мост или что нибудь).

Я всегда использовал свой мост (br0) на моем домашнем сервере, где я настраиваю Docker для использования этого моста (br0), и я соединяю интерфейс OpenVPN (tap0) на этом мосту, а мой физический интерфейс (eth0), который подключен через локальную сеть к моему домашнему маршрутизатору. И это всегда работало для меня, и все клиенты OpenVPN всегда могли получить доступ к каждому контейнеру Docker, подключенному через мост. br0 (как клиенты OpenVPN, так и контейнеры Docker имеют IP-адреса в моем диапазоне LAN).

Пару дней назад я арендовал VPS, где мой физический интерфейс напрямую подключен к Интернету (у него уникальный публичный IP).
Я сделал то же самое, что и раньше (настроил Docker на использование моего br0 для всех контейнеров) и я подключил OpenVPN tap0 на br0.

Проблема, с которой я столкнулся, заключается в том, что мой клиент OpenVPN НЕ смог выполнить ping или получить доступ к любому из контейнеров Docker (контейнеры могли пинговать и получать доступ к другим контейнерам Docker, но НЕ клиенту OpenVPN), и клиенты НЕ могли пинговать каждый другие тоже.

Есть ли в этом что-нибудь, к чему у меня нет физического интерфейса? Если да, мне было интересно, почему я должен соединить интерфейс моего сервера (возможно, подключенного к любому маршрутизатору через LAN) в дополнение к интерфейсу OpenVPN TAP, чтобы получить функциональный OpenVPN в режиме моста?

И эта проблема вызвала у меня еще один связанный с этим вопрос: пока клиенты в любом случае являются частью tap0 интерфейс, почему они не могут просто получить доступ друг к другу, не выходя по какой-либо причине из интерфейса TAP. Какую роль играет мой физический интерфейс?

Если моя проблема действительно связана с отсутствием физического интерфейса, подключенного к мосту, как я могу заставить OpenVPN полностью функционировать в режиме моста без этого физического интерфейса (или, по крайней мере, может быть любое решение для этого, если мой физический интерфейс подключен напрямую к интернет без локальной сети)?

Я надеюсь, что кто-нибудь поможет мне заставить этот OpenVPN работать

ДОБАВЛЕНО:

После просмотра некоторых видео у меня все еще возникает вопрос, было ли у меня два TAP интерфейсы, каждый из них сопоставлен с одним virtualbox система. tap0 -> vb0, tap1 -> vb1, и оба tap0 and tap1 связаны с мостом br0 (который не подключен к какому-либо физическому интерфейсу), только tap0 и tap1 соединены вместе, будет vb0 and vb1 смогут пинговать друг друга? (Меня сейчас не интересуют никакие внешние связи). В соответствии с @shodanshok ответь, НЕТ, не будут, верно? до сих пор я не могу точно понять, почему они не могут, не могли бы вы объяснить этот момент более подробно?

OpenVPN tap интерфейс работает на уровне 2 модели ISO / OSI и поэтому потребности подключение уровня 2 (читай: мост / коммутатор) к основному реальному интерфейсу.

Я настоятельно рекомендую вам перенастроить соединение OpenVPN для использования tun интерфейсы, которые, работая на более высоком уровне (уровне 3) стека, не нуждаются в мостовом соединении с основным интерфейсом (скорее, они маршрутизируют пакеты, как указано в таблице маршрутизации).

Взгляните на раздел "серверный мост" на страница руководства openvpn Чтобы получить больше информации.

Хорошо, после множества экспериментов теперь я могу ответить на свой вопрос и поделиться своим опытом:

Нужен ли мне мост (например, br0 на linux), чтобы иметь возможность запускать OpenVPN в режиме моста?

Нет! Я всегда думал обратное, но сейчас могу подтвердить это, как только вы настроите свой OpenVPN правильно можно подключить все свои OpenVPN клиентов напрямую, и они будут в своей собственной изолированной сети. Т.е. tap0 интерфейс не является частью какого-либо моста. Соответственно, нет необходимости в каком-либо физическом интерфейсе, соединенном с tap0, только tap0 с правильно настроенным OpenVPN сделаю свою работу!

Почему у меня не получилось изначально? (Теперь работает!)

Проблема была на самом деле на стороне клиента! Я всегда использовал это OpenVPN клиенты все в мой диапазон IP-адресов LAN, поэтому никаких дополнительных брандмауэр настройки были необходимы, но теперь диапазон IP-адресов другой (сеть представляет собой новую изолированную сеть), поэтому брандмауэр Windows всех клиентов просто отбрасывал все пинги от других клиентов, когда я отключал его (или разрешал для своих OpenVPN Диапазон IP пула) для подключения все работало отлично!

А что с докером? Удалось ли вам перебросить контейнеры tap0 и подключитесь к контейнерам из вашего OpenVPN клиенты?

Да! Я просто использовал очень простую конфигурацию (маска сети и диапазон IP были одинаковыми), маска сети /24, и все было очень просто, просто чтобы убедиться, что все работает, и все действительно работает!