Два домашни рутера, без пренасочени портове и VPN, който понякога все пак се свързва. UDP го позволява, защото защитната стена ще пропусне пакет, който може да съпостави с поток, който машината вече е започнала. Това е условен трик, а не функция, и условията се изброяват лесно, щом знаете какво сравнява защитната стена. Те са и причината еднакви профили да се държат различно в различни мрежи.

Сравнението, което прави защитната стена

Всяка изходяща дейтаграма създава краткотраен запис: адрес на източника, порт на източника, адрес на получателя, порт на получателя. Всичко пристигащо, което съвпада със записа, се приема за отговор и се пропуска. Правилата за входящия трафик не участват.

Значи въпросът не е дали защитната стена пуска партньора вътре. А дали пакетът на партньора изглежда като отговора, който записът чака. Сменете едно поле от тази четиричастна наредба и пакетът става чужд. Затова работеща настройка може да се счупи, когато се промени само номерът на порта, и затова един и същ порт може да работи на един рутер и да се провали на следващия.

Фиксирайте локалния порт на източника и същият номер се появява от двете страни на обмена. Това е целият механизъм и обяснява защо трикът е крехък, а не загадъчен.

Фиксиране на един порт от всяка страна

Стандартният UDP порт на OpenVPN е 1194, а lport задава порта на източника, от който се изпраща. Фиксирайте и двамата партньори и изходящата наредба на всеки сочи към порт, на който слуша другият:

# peer A
lport 1194
remote 198.51.100.20 1194
# peer B
lport 1194
remote 203.0.113.10 1194

Това работи само докато никой рутер между тях не пренаписва порта на източника. Когато пакетите се появяват в прихващане, но тунел не се вдига, пренаписването е първият заподозрян.

Къде наредбата спира да съвпада

NAT, който преобразува според получателя, дава на всеки партньор различен външен порт. Адресът, който са казали на партньора ви да използва, не е адресът, който го достига, затова входящият пакет не съвпада с нищо и се изхвърля тихо.

Преобразуването при оператора, наслоеният NAT и рандомизацията на портове завършват по един и същ начин. Същото важи за всяко междинно устройство, което пренаписва портове, без да пипа адресите.

При поточните транспорти е по-зле. TCP ръкостискането се проследява стъпка по стъпка, затова базиран на TCP VPN не може да бъде пробит по този начин изобщо и му трябва слушател някъде по пътя.

Обикновено първо се проваля едната страна

На практика двете мрежи рядко се държат еднакво. Единият рутер може да дава предвидимо преобразуване, а другият — портове според получателя, и резултатът е конфигурация, която работи между два дома и се проваля от мобилна мрежа. Противоречащите си доклади обикновено описват две различни двойки рутери. Нито един автор не греши и нито един резултат не се обобщава.

Разберете коя страна е изпуснала пакета, преди да пипате профилите. Прихващането от двата края решава въпроса с един опит: дейтаграмите, които напускат A и никога не стигат до B, означават, че потокът е бил пренаписан по пътя, а дейтаграмите, които стигат до B без отговор назад, означават, че защитната стена не ги е приела като свързани.

Двама партньори с публични IPv6 адреси заобикалят целия проблем. Без преобразуване няма какво да се съпоставя, затова правило в защитната стена, което назовава партньорите, е достатъчно и дизайнът спира да зависи от поведението на рутера.

Кога да спрем да опитваме

Хост с публичен адрес е надеждният отговор. Той може да прекрати тунела за двамата партньори или просто да им помогне да открият текущия външен адрес на другия, и двете схеми работят каквото и да правят NAT-овете. Управляван оверлей дава същата координация, ако политиката позволява.

Никое от тези не се нуждае от изключена защитна стена. Изключването на защитата, за да спечелим директната връзка, изхвърля причината, поради която директният опит беше привлекателен, и оставя машината отворена за продължителността на теста.

Опитайте първо директната схема, после запишете какво сте видели. Поведението на NAT и прихващането, което го показа, струват повече от двойката портове, която накрая използвахте, защото следващата мрежа ще е различна. Ръководството на OpenVPN 2.6 документира lport и опциите remote, от които това зависи.

Подобни статии