Кліенцкі порт-крыніца супраць сервернага слухача ў VPN-патоку
Параўнайце два нумары партоў у адным тунелі: нерухомы слухач сервера і кароткачасовы порт-крыніца кліента, а таксама трансляцыю маршрутызатара паміж імі.
У адной размове з'яўляюцца два нумары, і ніводзін з іх не памылковы. Серверны журнал паказвае слухача, які прапануе паслугу, ноўтбук паказвае сокет, што адправіў дэйтаграму, а маршрутызатар паміж імі можа перапісаць другі на выхадзе. Параўноўваць канцы размовы карысней, чым самі лічбы. Параўнанне ніжэй трымае асобна слухача, кліенцкі сокет і пераўтвораную крыніцу, бо яны адказваюць на розныя пытанні.
Два нумары, якія апісваюць процілеглыя канцы
Наладжаны порт сервера — гэта мэта, куды набірае кліент. Ён замацаваны палітыкай, прысутнічае ў профілі і павінен быць адкрыты на баку сервера. Порт-крыніца кліента выбіраецца лакальна, звычайна з эфемернага дыяпазону, і існуе, каб адказу было куды прыйсці. Ён можа змяняцца пры кожным перападключэнні, і нішто ў дызайне не залежыць ад яго стабільнасці.
Маршрутызатар паміж імі можа перапісаць гэтую крыніцу ў сваё ўласнае 'NAT'-супастаўленне. Таму нумар, які назіраецца на серверы, часта не мае ніякай сувязі з тым, што выбраў ноўтбук.
Дзе нумар крыніцы змяняецца на выхадзе
Вазьміце прыдуманы прыклад з IPv4: кліент за маршрутызатарам, які выконвае трансляцыю, сервер з адным 'UDP'-слухачом і адзіная дэйтаграма, што перасякае абодвух. Табліца называе кожны канец і тое, што з ім адбываецца, замест таго каб прайграваць пакет у трох пунктах назірання.
| Endpoint | What stays fixed | What changes on reconnect | Who owns it |
|---|---|---|---|
| Server listener | The service port and the address the profile names | Nothing; the listener does not follow the client | The server operator |
| Client socket | The destination it dials | The local source port, chosen per socket | The client, or its operating system |
| Translated source | Usually the public address of the router | The port, and sometimes the address after a network switch | The NAT device or the upstream carrier |
Мэта нязменная ў кожным радку, і змяняецца толькі ідэнтычнасць крыніцы. Патрабаванні UDP NAT адрозніваюць унутраны адрас і порт ад знешняга супастаўлення, і гэта менавіта розніца паміж другім і трэцім радкамі. Маршрутызатар можа захаваць порт-крыніцу кліента або выбраць іншы; захаванне — не тое, што праграма павінна меркаваць.
Прачытайце тры канцы з саміх хостаў
Спісы ніжэй паходзяць з трох розных машын і разам паказваюць усю размову. Запусціце першы на серверы, другі на кліенце, а трэці там, дзе існуе супастаўленне. Адзін радок журнала ніколі не паказвае ўсе тры.
ss -lunp 'sport = :1194'
ss -unp | grep 1194
conntrack -L -p udp | grep 1194
Першы спіс даказвае, што сервер прывязаны да порта паслугі, і паказвае, які працэс ім валодае. Другі паказвае лакальны сокет кліента і мэту, куды ён набіраў. Трэці паказвае супастаўленне, створанае маршрутызатарам, і гэта адзінае месца, дзе з'яўляецца пераўтвораная крыніца. Прачытайце іх у такім парадку, і два нумары перастануць выглядаць супярэчлівымі.
Што змяняе перападключэнне, а што не
Некаторыя маршрутызатары захоўваюць порт-крыніцу кліента, калі ён вольны, а некаторыя кожны раз выдзяляюць іншы. Абодва паводзіны нармальныя, і праграма, якая патрабуе першага, зламаецца на другім. Змена супастаўлення пасля перападключэння або пераключэння сеткі — не збой сервера: кліент адкрывае новы сокет, маршрутызатар выдае тое, што мае, а сервер бачыць новую крыніцу на тым жа слухачу. Збоем было б чакаць, што сервер прыме трафік, адрасаваны адвольнаму порту кліента.
Супольнасць OpenVPN атрымлівае такія паводзіны праз nobind, што дазваляе аперацыйнай сістэме выбраць лакальны порт; аддалены порт па-ранейшаму бярэцца з профілю. Яўнае прывязванне — свядомы выбар, а не патрабаванне пратаколу. Сервер працягвае прапаноўваць адзін канец, пакуль кліенты выбіраюць уласныя лакальныя ідэнтычнасці.
Пазначце слаі асобна ў запісе
Унутры тунеля ёсць другая размова з уласнымі партамі. Запыт HTTPS, які нясе тунель, мае мэту TCP 443, а знешняе шыфраванае злучэнне выкарыстоўвае UDP 1194, таму змена знешняга порта-крыніцы нічога не мяняе ва ўнутранай паслузе.
Нават на знешнім слаі пратакол мае значэнне. UDP 1194 і TCP 1194 — розныя канцы, і 'TCP'-слухач ніколі не атрымае дэйтаграму UDP, бо нумар супадае. Каб дакументаваць разгортванне, пазначце серверны слухач, кліенцкі сокет і пераўтвораную крыніцу як тры розныя рэчы і дадайце транспарт да кожнай.
Затым хай палітыка ідзе за ролямі. Сервер адкрывае патрэбны транспарт на сваім слухачу і па-ранейшаму аўтэнтыфікуе партнёра; фэйрвол кліента дапускае адказы на яго ўласны зыходны абмен, не публікуючы ўваходную паслугу. Фільтру без стану патрэбны яўна запісаны зваротны кірунак, і гэта практычная прычына, чаму адрозненне важнае па-за акуратнымі схемамі.