OpenVPN или WireGuard? Решение по идентичност и транспорт
Ключовете, потоците за вход и транспортът само по UDP оформят избора много преди пропускателната способност. Направете четири проверки и пазете измерването честно.
Сравняването на тези два протокола е полезно само ако сравнява това, което наистина ще експлоатирате. WireGuard идентифицира партньорите по публичен ключ и пренася протокола си по UDP, докато OpenVPN предлага по-широк набор от схеми за удостоверяване и може да работи по UDP или TCP, когато сървърът предоставя и двете. Тези разлики оформят осигуряването и резервния път много преди да оформят пропускателната способност. Изпълнете четирите проверки по-долу по ред; първите две обикновено решават избора, а последните две показват дали решението е било правилно.
Започнете с идентичността, не със списъка с шифри
Партньорът в WireGuard пази един частен ключ и изброява публичните ключове, до които може да достигне. Доставчикът може да обвие това в портал за акаунт, но самият протокол няма обмен на потребителско име и парола, така че жизненият цикъл на акаунта живее в това, което разпространява ключовете. OpenVPN може да използва сертификати, плъгин към съществуваща директория или скрипт за проверка, затова организациите с идентична система често го предпочитат. Нито един от двата дизайна не премахва въпроса как се премахва изгубено устройство.
| Decision | OpenVPN | WireGuard |
|---|---|---|
| Identity | Certificates, plugins or scripts against an existing directory | One private key per peer, public keys listed for the peers it may reach |
| Transport | UDP or TCP profiles when the server offers both | UDP only in the native protocol |
| Routing and DNS | Server pushes routes and DNS options | AllowedIPs maps ranges to peers, and tooling installs the routes |
| Where it usually breaks | Profile mismatch, expired certificate, failing plugin | Blocked UDP, wrong AllowedIPs, key not installed |
Кратката конфигурация не е същото като просто осигуряване. Даването на един частен ключ на няколко души прави по-късното премахване двусмислено, защото отмяната му премахва всички наведнъж. Запишете съответствието човек – ключ или сертификат преди избора и решението за протокола става значително по-лесно.
После вижте какво позволява транспортът
Протоколът на WireGuard използва UDP. Услугите на OpenVPN могат да предлагат профили и по UDP, и по TCP, а в мрежа, която блокира или влошава UDP, втората възможност е практичен резервен път, а не теоретичен. Сървърът трябва да поддържа избрания от вас профил и смяната на номера на порта не превръща тунела в HTTPS, нито убеждава защитна стена да го пропусне.
Пренасянето на TCP в TCP също променя поведението при загуби, защото и двата слоя повторяват и преподреждат независимо. TCP профил, който работи в ограничителна мрежа, може да се представя зле в мрежа със загуби, и това е причина да държите и двата профила налични, вместо да обявявате един за по-добър.
После проверете маршрутизацията и разрешаването на имена
AllowedIPs в WireGuard съпоставя диапазони от адреси на партньори и действа като решение за маршрутизация вътре в протокола, а околните инструменти използват тези диапазони, когато инсталират маршрути. OpenVPN изпраща маршрути и DNS опции от сървъра. И в двата случая клиентът може да се вдигне, докато желаната политика е приложена само наполовина.
ip route show
ip -6 route show
resolvectl status
wg show
Прочетете изхода, преди да се доверите на индикатора за свързване. ip route show изброява какво клиентът е инсталирал за IPv4, а вариантът за IPv6 хваща тунел, който носи само едно семейство. resolvectl status показва кой резолвер клиентът наистина ще попита, а wg show отпечатва AllowedIPs, които WireGuard смята, че притежава. Ако резолверът още сочи към локалната мрежа, докато маршрутите претендират за пълно покритие, DNS излиза извън тунела.
После измерете задачата, която ви интересува
Дръжте устройството, мрежата и дестинацията постоянни и запишете клиентите и крайните точки, които използвахте. Ако двете услуги излизат в различни градове или работят на различен хардуер, кажете го, защото резултатът тогава описва тези услуги, а не протоколите.
iperf3 -c 203.0.113.20 -t 30
mtr -rwzbc 50 203.0.113.20
Изпълнете двете команди два пъти, по веднъж за всяка двойка профили, в същата мрежа и на същото устройство. iperf3 дава число за пропускателната способност, а mtr дава пътя и къде се появяват загуби, което едно число за изтегляне не може да покаже. Числото за изтегляне също пропуска това, което забелязва разговорът: добавена латентност, трептене и колко време отнема повторното свързване. Записвайте ги отделно, защото протокол, който печели по пропускателна способност, може да губи по задачата, която наистина изпълнявате.
За управлявана връзка съвместимостта, поддръжката и усилието за подновяване могат да надхвърлят малка разлика в бенчмарка. За личен изход журналирането и юрисдикцията на оператора имат по-голямо значение от етикета на протокола. И двата протокола могат да носят добра връзка; услугата и нейната конфигурация решават какво получавате.
Запишете двойката профили преди теста
Изберете един профил на протокол преди измерването и запишете какво трябва да прави всеки: само частни подмрежи или целия трафик с конкретен изход. Тест, който сравнява профил с разделен тунел с профил с пълен тунел, измерва профилите, а не протоколите. Сложете името на клиента, версията на клиента и мястото на изхода в същата бележка.
После изпълнете същата задача и на двата, в същата мрежа, в същата сесия. Ако един не може да се свърже изобщо, този провал е резултатът и принадлежи в записа заедно с причината. Пазете записа с документацията на услугата, за да сравни следващият човек същата двойка, вместо да започва отначало.