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

OpenVPN для размещения устройства с очень большим MTU

Вопрос

Какой минимальный набор директив конфигурации сервера и клиента мне необходим для выполнения следующих условий?

  1. Сеть Ethernet виртуального уровня 2, которая не будет соединяться с другими интерфейсами.
  2. Клиенты VPN могут обмениваться кадрами с любыми другими клиентами VPN.
  3. DHCP не требуется (TCP / IP не будет использоваться в VPN)
  4. Весь трафик в VPN будет передаваться по протоколу Ethernet (на самом деле нет сетей уровня 3+).
  5. MTU виртуальной сети должен быть намного выше, чем у базовых сетей, и это должно быть прозрачно для узлов в VPN. OpenVPN может фрагментировать пакеты вне VPN - я думаю, что это возможно через fragment и tun-mtu директивы. Накладные расходы на использование этих опций не вызывают беспокойства. (целевой MTU 2360)
  6. Безопасность сети не вызывает беспокойства - ее цель строго чтобы быть полностью программной связью Ethernet для узлов, которые физически не находятся рядом друг с другом.

Какую работу я уже сделал?

У меня большой опыт работы с OpenVPN, поэтому я уверен, что у меня есть основы. Тем не менее, я не могу четко сформулировать требование к большому размеру MTU. Клиенты в VPN могут подключаться, и если я настрою TCP / IP для тестирования, все клиенты могут пинговать друг друга, за исключением случаев, когда тестирование ping с do-not-fragment и размером пакета больше 1472. Журналы не показывают ничего очевидного.

См. Следующие файлы конфигурации.

конфигурация сервера:

mode  server
port  1195
proto udp
dev   tap

tun-mtu 2360
fragment 1500

comp-lzo
max-clients 200
client-to-client

ca     special-net/ca.crt
cert   special-net/sn-server.crt
key    special-net/sn-server.key
dh     special-net/dh1024.pem
status special-net/status.log
tls-server
tls-auth ta.key 0
auth-user-pass-verify /bin/true via-env
duplicate-cn
username-as-common-name

user nobody
group nogroup
persist-key
persist-tun
verb 4

конфигурация клиента:

client
remote <redacted> 1195
proto udp
dev tap

tun-mtu 2360
fragment 1500

ca             special-net/ca.crt
cert           special-net/sn-client.crt
key            special-net/sn-client.key
tls-auth       special-net/ta.key 1
auth-user-pass special-net/user.txt
ns-cert-type server

nobind
user nobody
group nobody
persist-key
persist-tun
comp-lzo
verb 3
resolv-retry infinite

Почему я делаю странные вещи с OpenVPN?

Мне нужен способ раздавать (в отличие от простого захватить) сырые кадры 802.11, наблюдаемые постами прослушивания. Я намереваюсь добиться этого за счет того, что посты прослушивания будут передавать каждый кадр 802.11 как есть в VPN, но с добавлением заголовка Ethernet. Заголовок Ethernet будет просто широковещательной передачей Ethernet, которую затем будет распространять OpenVPN. Максимальный размер кадра для дейтаграммы 802.11 составляет 2346 октетов, что делает мой желаемый MTU 2360 (14 дополнительных байтов для заголовка Ethernet).

Вдохновение пришло в одночасье. Похоже, что tun-mtu Директива просто информирует OpenVPN о MTU и не заставляет OpenVPN устанавливать MTU на самом устройстве подключения. Установка MTU на интерфейсах ответвлений вручную позволила клиентам VPN отправлять и получать пакеты без фрагментации до полных 2360 байт, как я требовал.

Я устанавливаю MTU напрямую, используя ip link set tap0 mtu 2360 у каждого клиента и сервера.