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

Серьезные проблемы с производительностью при совместном использовании подключения клиента openvpn к клиентам локальной сети virtualbox

Я пытаюсь настроить внутреннюю сеть в Virtualbox, чтобы совместно использовать туннель клиента openvpn с несколькими виртуальными машинами, действующими в качестве клиентов, которые должны быть полностью изолированы от всего, кроме интерфейса туннеля VPN, чтобы предотвратить все возможности клиентских виртуальных машин от раскрывая мой реальный IP-адрес.

Моя установка состоит из 1 виртуальной машины, на которой запущен сервер Ubuntu, и нескольких клиентских виртуальных машин, которые подключаются к ней для доступа к openvpn-соединению, которое имеет серверная виртуальная машина. Серверная виртуальная машина подключена к eth0 как NAT для доступа к Интернету. Эта виртуальная машина также имеет интерфейс eth1, который подключен к внутренней сети Virtualbox, используемой другими клиентами виртуальной машины для подключения к Интернету. Dnsmasq работает через eth1 для обслуживания IP-адресов клиентам, а iptables настроен на пересылку всего трафика с eth1 на tun0, который является адаптером openvpn tun на сервере.

Пока это частично удается. Я могу заставить своих клиентов связываться с сервером по внутренней сети и получать доступ к Интернету через туннель openvpn, настроенный на сервере, но клиенты испытывают серьезные проблемы с подключением и производительностью в Интернете, в то время как сам сервер не имеет проблем с Интернетом. доступ через vpn. Я исследовал эту проблему и обнаружил, что существует проблема с таймингами mtu, поскольку мой хост-компьютер уже подключен к VPN, а виртуальная машина сервера также подключена к другой виртуальной машине, которая добавляет отступы и может создавать проблемы с фрагментацией и производительностью. Мне нужно решение, которое не требует изменения vpn-соединения хоста, все должно быть сделано в виртуальном боксе и виртуальных машинах. Я попытался добавить параметры tun-mtu 1400 и mssfix в файл конфигурации клиента openvpn на моей серверной виртуальной машине, но затем openvpn отказывается подключаться. В качестве альтернативы я попытался решить эту проблему со стороны своих клиентских виртуальных машин, установив размер mtu ниже 1400, но проблема не была решена, несмотря на перезапуск и сброс сетевого адаптера. Однако сама серверная виртуальная машина не имеет проблем с поддержанием нормальной производительности по vpn, и только клиенты во внутренней сети испытывают проблемы с Интернетом. Попробовав эти два решения, я протестировал доступ к моей серверной виртуальной машине через замазку от клиента и загрузку файла через HTTP, что показало отсутствие проблем с производительностью между клиентскими виртуальными машинами и серверной виртуальной машиной по внутренней сети. В настоящее время я понятия не имею, почему доступ клиентов к локальной сети не имеет проблем, а доступ к Интернету есть. Клиенты могут пинговать с помощью icmp, загружать файлы (с гораздо меньшей скоростью, чем обычно) и частично получать доступ к некоторым веб-сайтам, что заставило меня поверить в то, что существует проблема с mtu. Однако я понятия не имел, что делать дальше, чтобы решить эту проблему, и попробовал все известные мне решения.

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

Базовое изображение макета (поможет вам понять): макет

Изображения, показывающие проблемы клиента с подключением: проблемы

Ifconfig на серверной виртуальной машине показывает все сетевые интерфейсы:

root@server1:/var/www# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:8b:b4:cb
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe8b:b4cb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:126546 errors:0 dropped:0 overruns:0 frame:0
          TX packets:75182 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:23817797 (23.8 MB)  TX bytes:9685507 (9.6 MB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:37:98:0c
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe37:980c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46043 errors:0 dropped:0 overruns:0 frame:0
          TX packets:103573 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3105270 (3.1 MB)  TX bytes:550239993 (550.2 MB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:247 errors:0 dropped:0 overruns:0 frame:0
          TX packets:247 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:19597 (19.5 KB)  TX bytes:19597 (19.5 KB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.xxx.x.x  P-t-P:10.xxx.x.x  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:37018 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20921 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:51937120 (51.9 MB)  TX bytes:1148212 (1.1 MB)

/ etc / network / interfaces настройки:

root@server1:/var/www# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# Virtualbox internal Network
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

Iptables:

root@server1:/var/www# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  192.168.1.0/24       anywhere             ctstate NEW
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Конфигурационный файл OpenVPN:

client
dev tun
proto udp
remote xxx.xxx.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
tls-client
remote-cert-tls server
auth-user-pass
comp-lzo
verb 1
reneg-sec 0
auth-user-pass login.conf