Портту багыттоо жана VPN кирүү: пакет чындыгында кайда барат
Порт багыттоо барар жерин кайра жазып, ошол жерде токтойт; VPN пакетти адегенде ороп алат. Ар бири кайсы катмарды өзгөртөрүн жана мунун HTTPS үчүн маанисин караңыз.
Эки долбоор, бир HTTPS колдонмо, жана пакет ар биринде башка жол менен жүрөт. Порт багыттоо пакет кайда жеткирилерин өзгөртүп, калганын кыймылдатпайт. VPN бул пакетти адегенде башка пакеттин ичинде алып жүрөт, ошондуктан колдонмонун угуучусу башка булакты жана кичирээк эң чоң пайдалуу жүктү көрөт. Адамдар талкуулаган шифрлөө эки учурда тең бар, анткени колдонмо дагы эле HTTPS; айырмасы — ким байланыш ача алат жана ортодогу тармак эмнени байкай алат. Ушул айырма практикалык суроолордун көбүн чечет.
DNAT эрежеси барар жерин кайра жазып, ошол жерде токтойт
Linux дарбазасында кызматты жарыялоо nat таблицасынын PREROUTING тизмегиндеги эреже же nftables ичиндеги барабар нерсе дегенди билдирет. Эреже коомдук дарек менен портко туура келет, анан барар жерин колдонмонун жеке дарегине кайра жазат. Булак дареги, булак порту жана пайдалуу жүк кыймылсыз калат, ал эми conntrack дал келүүнү жазып алат, ошондуктан жооптор сыртка чыкканда кайра жазылат. Бул жүрүм-турум RFC 3022 ичинде сүрөттөлгөн салттуу даректерди которуу модели.
sudo iptables -t nat -A PREROUTING -d 203.0.113.10 -p tcp --dport 443 \
-j DNAT --to-destination 10.20.30.40:443
sudo iptables -t nat -L PREROUTING -n -v
sudo conntrack -L -p tcp --dport 443
Колдонмонун угуучусу байланыштын которуу аркылуу келгенин эч качан билбейт. Ал кардардын чыныгы булак дарегин көрөт, бул кирүү журналдары жана ылдамдык чектөөлөрү үчүн пайдалуу, жана жеке дарекке жооп берет, анткени conntrack дал келүүнү тескери бурат. Бул жолдо эч нерсе шифрди ачпайт же кайра шифрлебейт: TLS дагы эле кардар менен колдонмонун өз сертификатынын ортосунда иштейт.
Эреже кийин кезиге турган иштебей калуу режимдерин да белгилейт. Эгер дарбаза өткөрсө, бирок колдонмонун хостунда кардарга кайтуу жолу жок болсо, жооптор туура эмес булак менен чыгат жана кол алышуу токтойт. Эгер экинчи эреже мурун туура келсе, тартип жыйынтыкты чечет, ал эми iptables -t nat -L -n -v пакетти кайсы эреже алганын далилдеген эсептегичтерди көрсөтөт.
Туннель пакетти угуучу көргөнчө ороп алат
VPN колдонмону такыр жарыялабайт. Кардар дарбазанын коомдук дарегине багытталган сырткы пакет курат, ичиндеги пакетти анын ичине шифрлейт, ал эми дарбаза шифрди ачып, ички пакетти жеке барар жерине багыттайт. WireGuard ичинде сырткы ташуу UDP, адатта бийик портто; OpenVPN TCP 443 үстүндө болсо, сырткы пакет жолду байкаган бардык нерсеге TLS сыяктуу көрүнөт.
Туннелдин ичинде ички пакет жеке даректерди сактайт: кардардын туннель дареги, айталы, 10.8.0.6, жана колдонмо 10.20.30.40 дарегинде. Ошондуктан угуучу туннель пулунан булакты көрөт, жана ар бир кардар ошол дарбазаны кийинки секирик катары бөлүшөт. VPN артындагы кирүү журналдары көбүнчө колдонуучунун ордуна дарбазаны көрсөтөт, дал ушул себептен, эгер дарбаза баштапкы булакты сактабаса.
Ороо аталыш ордун жумшайт, жана бул өлчөнүүчү натыйжасы бар жалгыз механизм деңгээлиндеги айырма. Сырткы IP аталышы кошуу UDP кошуу WireGuard'дын өз аталышы жолдун MTU'сунен жейт, ошондуктан чоң пакеттерди бөлүү керек же ички TCP стек өз MSS'ин чектеши керек. Багытталган жолдо иштеген өткөрүү туннелде токтоп калышы мүмкүн, эгер ортодогу түзмөк кичирээк MTU'ну билдире турган ICMP'ни таштаса.
ip route get 10.20.30.40
ping -M do -s 1400 10.20.30.40
sudo iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu
Ачылуу кирүү жерде чечилет, шифр менен эмес
Эки долбоор тең бир TLS угуучусунда бүтөт, ошондуктан экөө тең бир сертификатты, бир протокол версияларын жана бир колдонмо кирүүсүн мураска алат. Өзгөргөн нерсе — кимге кол алышууну баштоого уруксат бар. Коомдук багыттоодо 203.0.113.10:443 дарегине жеткен ар кандай хост TCP кол алышуусун жана TLS ClientHello алат, сиздин колдонмоңуздун авторизациясы такыр карала электе. Тек туннель аркылуу кирүүдө угуучуга дарбаза туннелге багыттаган даректерден гана жетүүгө болот, ал эми бөтөн адамдын SYN'и дарбаза саясатында өлөт.
Бул айырма жеткиликтүүлүк жөнүндө, купуялуулук жөнүндө эмес. Багытталган HTTPS кызматы ачык текст эмес, жана VPN колдонмо аутентификациясынын зарылдыгын жойбойт: туннелге кабыл алуу түзмөктүн бул тармакка пакет жөнөтө аларын жооп кылат, ал эми файл колдонмосу колдонуучунун документти окуй аларын жооп кылат. Экөөнү аралаштыруу — командалардын бүт LAN'ды берген VPN жана бир жалпы сырсөздүү колдонмого келишинин жолу.
Угуучу менен саясатты өзүнчө текшериңиз, анткени экөөнүн кайсынысы болбосун сиз ойлогондон кенен болушу мүмкүн:
sudo ss -ltnp 'sport = :443'
sudo nft list ruleset
openssl s_client -connect 203.0.113.10:443 -servername files.example.com </dev/null
Эгер ss угуучунун 0.0.0.0 менен байланганын көрсөтсө, колдонмого маршруттоо жана брандмауэр саясаты уруксат берген жердин бардыгынан жетүүгө болот, ал эми багыттоо — кирүүнүн бир жолу гана. Жеке дарекке байлоо же брандмауэрде булак диапазонун чектөө VPN тандоодон өзүнчө чечим, жана ачылууну чындап тарыткан ошол чечим.
Жолду өлчөңүз, белгини эмес
Бирөө багыттоо тезирээк деп айтканда, ак ниет салыштыруу калганын туруктуу кармайт: бир кардар, бир кирүү тармагы, бир файл, бир TLS конфигурациясы, бир колдонмо хост. Өткөрүүнү ар бир жол боюнча эки жолу иштетип, жалпы убакытты, каталардын санын жана жооп берүү жөндөмүн жазыңыз, байланышсыз ылдамдык тестинин натыйжасын эмес.
curl -sS -o /dev/null -w '%{time_connect} %{time_appconnect} %{time_total}\n' \
https://files.example.com/report.pdf
mtr -rwc 20 203.0.113.10
mtr -rwc 20 10.20.30.40
Бул сандар байланыш орнотууну өткөрүү убактысынан бөлөт, бул маанилүү, анткени эки жол адатта шифр баасында эмес, барып-кайтуу кечигүүсүндө жана MTU'да айырмаланат. TLS иши эки долбоордо тең четтеринде жүрөт, ал эми туннель инкапсуляцияны, башка маршрутту жана балким тыгындуу дарбазаны кошот. Эгер туннелдин жолу узунураак болсо же дарбазасы жүктөлгөн болсо, айырма жолго таандык, шифрлөө сөзүнө эмес.
Кызматка чындап керек болгон кирүү саясатын тандаңыз, анан өлчөнгөн айырма аны өзгөртүүгө татыктуубу, ошону чечиңиз. Коомдук багыттоо ачык интернет үчүн арналган кызматка ылайыктуу, булак чектөөлөрү, жаңыртылган TLS жана алдыңкы жагында көзөмөл менен. Тек туннель аркылуу кирүү колдонуучулары мурунтан катталган ички куралга ылайыктуу, бирок дарбазанын маршруттоосу жана колдонмонун уруксаттары экөө тең бүт LAN'дан кууш болушу керек.
Долбоорду аякталды деп жарыялоодон мурун төрт нерсени ырастаңыз: угуучу кайсы дарекке байланган, кайсы эреже же маршрут пакетти ичке киргизет, кайтуу жолу кардардын чыныгы дарегинен иштейби, жана чоң жүктөр MTU'дан өтөбү. Алардын ар бири үчүн жогоруда буйрук бар, жана эч бирине «коопсуз» деген сөз же өткөрүү жөндөмдүүлүгүнүн графиги жооп бербейт.