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

Тонкая настройка сетевого трафика для туннеля OpenVPN

Я установил сервер OpenVPN на VPS под управлением Centos 5.7 через UDP. Клиенты подключаются к нему при загрузке, и при включении получают адрес 10.5.5.x. На сервере работают почтовые, самба и jabber-серверы. OpenVPN настроен так, что клиенты могут видеть друг друга, поэтому работают ping, jabber, ssh, scp и т. Д. Интерфейс tun предназначен только для этой подсети, поэтому обычный интернет-трафик не маршрутизируется. Все клиенты - Ubuntu 11.10.

Однако у меня проблемы с сетевым трафиком. Похоже, что всякий раз, когда требуется передать больший объем данных (одноранговая связь scp, отправка больших почтовых вложений на сервер, передача файлов через Pidgin / XMPP, одноранговую сеть VNC), действия тайм-аут. По крайней мере, я так думаю, потому что активность просто зависает. Например:

user@somehost:~$ scp Desktop/ss.png root@10.5.5.55:/home/otheruser/Desktop/
ss.png                                      100% 849KB 848.7KB/s 00:00

и он там просто висит. ctrl-c не работает. файлы меньшего размера проходят без проблем. scp'ing этого файла на сервер, а затем scp'ing его предполагаемому узлу работает.

Задержка пинга по VPN (от клиента к серверу) варьируется от 90 до 300 мс, в зависимости от клиента.

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

Это похоже на проблему с MTU: маленькие файлы работают, большие - нет.

openvpn имеет --mtu-test возможность проверить размер MTU по ссылке. Вы можете запустить это.

Если он показывает MTU меньше 1500, вы можете посмотреть параметры «фрагмент» и / или «mssfix».

Посмотрите документы http://openvpn.net/index.php/manuals/427-openvpn-22.html для опций, связанных с MTU / обсуждение.

В прошлом я проводил довольно много тестов скорости OpenVPN, и всегда сводился к тому, что мой процессор максимально загружал скорость. Поскольку OpenVPN не поддерживает несколько процессоров, он может работать только настолько быстро, насколько это позволяет один процессор. Поэтому я настоятельно рекомендую посмотреть на использование ЦП сервера при загрузке этих больших файлов. Отсюда вам нужно будет начать настройку параметров server.conf.

  • Протестируйте различные стандарты шифрования (в итоге я использовал AES-128-CBC для самого быстрого / лучшего шифрования из моего тестирования)
  • Тестирование udp vs tcp (в итоге я использовал udp)
  • Используйте меньший размер ключа dh (1024 вместо 2048)
  • Уменьшите подробность ведения журнала (это потребляет меньше ресурсов процессора и оставляет больше места для шифрования)
  • Проверьте различные настройки, такие как rcvbuf, sndbuf, tun-mtu, tun-mtu-extra, mssfix, fragment, fast-io, auth-none (после большинства этих тестов я просто использовал fast-io, потому что другие не сильно влияет на скорость на моих тестах)

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