Рейтинг:0

Использование контейнера с клиентом openvpn для маршрутизации другого клиента локальной сети

флаг nl

Мучаюсь с этой бедой почти два месяца. Я объясню ситуацию. Я работаю из дома, и для доступа к большинству услуг моей компании мне нужно использовать клиент openvpn. Дело в том, что у меня дома три компьютера, один сервер общего назначения, мой персональный компьютер и служебный ноутбук. Я уже давно настроил nat и маршруты для доступа с моего персонального компьютера на серверы компании, идущие через клиент openvpn, работающий на моем ноутбуке. Я беспокоюсь о его батарее, потому что я каждый день оставляю его подключенным к зарядному устройству, поэтому после долгих раздумий я решил переместить клиент openvpn в контейнер на моем сервере, чтобы использовать его в качестве маршрутизатора для подключения к серверам компании.

Я настроил контейнер с помощью macvlan с диапазоном IP-адресов моей локальной сети, привилегированными правами и разрешениями net_admin. После нескольких месяцев проб и ошибок я заработал только один раз, затем мой сервер умер, и я забыл, какие iptables я установил в контейнер, чтобы он заработал. Я не прописал это в скрипте точки входа из-за нехватки времени и теперь мне снова придется с этим разбираться.

Все на сервере openvpn, сети и серверах компании знает, как перенаправить каждый IP-адрес клиентов vpn.

Теперь мне нужно направить мою локальную сеть через клиент openvpn внутри контейнера.

Подробности:

  • Локальная сеть: 192.168.0.0/24
  • Локальный шлюз: 192.168.0.1
  • ПК: 192.168.0.17
  • Домашний сервер: 192.168.0.16
  • Контейнер: 192.168.0.242
  • Клиент OpenVPN: 10.1.2.4
  • Шлюз OpenVPN: 10.1.2.1
  • Диапазон серверов компании: 192.168.2-19.0/24

На моем домашнем сервере (192.168.0.16) все работает отлично. Мне нужно было только добавить несколько маршрутов, указывающих на IP-адрес контейнера. ip маршрут добавить 192.168.19.0/24 через 192.168.0.242 Но то, что я не могу заставить работать, это остальная часть локальной сети. На моем персональном компьютере я настроил маршрутизатор, указывающий на IP-адрес контейнера (192.168.0.242) для диапазона серверов компании, как я сделал на своем сервере.

Если я запускаю ping для любого из них, я вижу с помощью tcpdump и tshark, что он достигает пункта назначения на другой стороне (ПК> Домашний сервер> Контейнер> VPN-клиент> VPN-сервер> Шлюз> Сервер). Это достигает пункта назначения, как и предполагалось, но когда он возвращается на мой компьютер (Сервер> Шлюз> VPN-сервер> VPN-клиент) Ответ ping возвращается и умирает на контейнере, поэтому проблема, которую я должен решить сейчас, заключается в том, как сделать контейнер nat или переслать этот пакет на мой персональный компьютер.

Я точно знаю, что мне нужно добавить или удалить внутри контейнера только правила iptables.

На моей точке входа у меня есть эти iptables, которые загружаются после запуска клиента open vpn.

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
iptables -A FORWARD -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
iptables -A ВПЕРЕД -i tun0 -o eth0 -j ПРИНЯТЬ
iptables -A ВПЕРЕД -i eth0 -o tun0 -j ПРИНЯТЬ

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

Ответить или комментировать

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