Защо IKEv2 на Android не работи на нестандартен UDP порт
Собственият формуляр IKEv2 приема адрес, а не порт. Проверете дали клиентът го поддържа, задайте двата порта на сървъра и после гледайте кадрирането и журналите.
Шлюзът отговаря на IKEv2 на UDP 4443 с причина, в профила има поле с надпис Server, въвеждате името на хоста и порта, а телефонът съобщава, че не може да достигне сървъра или не може да разчете адреса. Нищо не се блокира. Собственият формуляр на Android очаква хост и същото важи за Windows. Нестандартният порт е възможност на клиента, преди да е настройка на сървъра, и само някои клиенти ви позволяват да го изразите. Минете трите части по ред: какво може да каже клиентът, на какво слуша сървърът и дали двете страни кадрират пакетите по един и същ начин.
Какво всъщност изпрати телефонът
Низ host:port в поле, предназначено за име, се разрешава като име. Резолверът не връща нищо за vpn.example.net:4443 и грешката, която виждате, е отказ при разрешаване на име или недостъпност, а не изтичане на време на порт. Тази разлика е важна, защото повторение с по-кратко име или друга мрежа никога няма да поправи низ, който формулярът не може да разчете.
Собственият профил IKEv2 на Android, както и вграденият клиент на Windows VPN, е фиксиран към стандартните IKE портове. Нито един от тях не показва поле за порт и никакво редактиране на профила не добавя такова. Ако слушателят на оператора наистина е на 4443, вграденият клиент е грешният инструмент, а не неправилно конфигуриран.
Използвайте клиент, който показва порта
Клиентът strongSwan за Android документира конфигурируем порт на сървъра в разширените настройки на профила, затова се появява в почти всяка работеща рецепта за тази схема. Тази поддръжка принадлежи на този клиент: друго приложение IKEv2 или доставчическа разклонена версия на същото приложение може да не показва същото поле, дори базовият демон strongSwan да го поддържа.
Поискайте от оператора целия набор наведнъж: име на шлюза, UDP порт, метод за удостоверяване и идентичността на сървъра, която клиентът трябва да очаква. Нестандартният порт не е причина да изключите проверката на сертификати или да смените протокола. Въведете порта там, където го очаква инсталираният клиент, и ако този клиент няма такова поле, отговорът е друг одобрен клиент, а не измислено заобикаляне.
Сървърът има два порта и двата трябва да съвпадат
IKE започва на UDP 500, а NAT проникването обикновено премества IKE и инкапсулирания ESP на UDP 4500. Това са отделни настройки в strongSwan, затова сървър, преместен на един нестандартен порт, изисква и двете да се сменят на една и съща стойност:
plugins {
socket-default {
port = 4443
port_nat_t = 4443
}
}
С един порт за двете роли демонът трябва да различава IKE от ESP-in-UDP на същия сокет, което прави чрез четирибайтовия маркер за не-ESP, който предхожда съобщение IKE. Затова клиентът не може да преговаря на нестандартния порт и после тихо да продължи на 4500, и затова фразата “просто сменете порта” скрива изискване за кадриране.
Пренасочването не е слушател
Пренасочването на 4443 към обикновен IKE слушател е режимът на отказ, който изглежда почти успешен. Първият обмен пристига, сървърът отговаря и след това връзката засяда или преизчислява ключове до нищо, защото отговорът излиза от друг порт и по-късният инкапсулиран трафик никога не съвпада със състоянието, което двете страни са създали. Правило, което презаписва порта на местоназначението, без да мести слушателя, дава точно този полуотворен резултат.
Пътят също трябва да позволява UDP от край до край. Преминаването на TCP 443 през хотелска или операторска мрежа не казва нищо за IKEv2 на UDP порт, дори със същия номер. Там, където е разрешен само TCP 443, нестандартният UDP порт не превръща IKEv2 в HTTPS и правилният отговор може да е друг път за достъп, а не пореден експеримент с порт.
Разделете трите етапа, когато тествате
Правете запис на сървъра, докато клиентът опита веднъж. Заявка, която никога не пристига, е въпрос на крайна точка или защитна стена; заявка, която пристига без отговор, е въпрос на слушател или политика; отговор, след който настъпва тишина, е въпрос на кадриране или идентичност.
tcpdump -ni eth0 -vv udp port 4443
После четете съобщението на клиента, а не въртящия се индикатор. Грешка в предложението означава, че алгоритмите не съвпадат, грешка при удостоверяване означава, че идентичностите или сертификатите не съвпадат, а повторните предавания без отговор означават, че нищо не отговаря на този порт. Тествайте по един етап наведнъж и сменяйте по едно поле между опитите; документацията на strongSwan за NAT проникване описва маркера и поведението на порта, които записът ви показва.