NAT сиздин VPN сервериңиз кайсы булак дарегин чындыгында көрөрүн аныктайт
Ноутбугуңуздун дареги VPN серверине эч качан жетпейт. NAT аны акыркы секирикте кайра жазат, ал эми туннелдин IP дареги кийинчерек берилет. Эки учун кантип салыштыруу керек.
Сиз VPN сервери ноутбугуңуздун дарегин пакеттен окуп, журналга жазат деп элестетесиз. Ал окуган нерсе — акыркы NAT секириги сырткы аталышка салган дарек, ал эми хотспот катары колдонулган телефондо бул көбүнчө жүздөгөн башка абоненттер менен бөлүшүлгөн дарек болот. Өз машинаңыздын 192.168.x.x дареги ошол аталышта интернетти эч качан кесип өтпөйт, ал эми туннелдин дарегин сервер байланыш мурун эле орногондон кийин берет. Ошондуктан сервер журналы менен ноутбуктагы ip addr дал келбесе, экөө тең туура эмес эмес; алар бир сессиянын ар башка катмарларын сүрөттөйт.
Үч дарек, журналда болсо бирөө гана
Чаташуу үч даректи бирге бириктирүүдөн келип чыгат. Ар биринин ээси башка, ал башка аталышта жашайт жана серверге башка жол менен жетет.
| Address | Who assigns it | Where it sits | Visible to the VPN server |
|---|---|---|---|
Device address, e.g. 192.168.1.24 | Your router via DHCP | Outer header, before translation | No, rewritten in place |
| Translated address and port | Router, ISP CGNAT, or both | Outer header, after translation | Yes, this is the tuple it logs |
Tunnel address, e.g. 10.8.0.6 | The VPN server itself | Inner header, after decapsulation | Yes, but it chose it |
Туташуу учурунда белгисиз болгону ортодогу сап. Сервер аны демонго жараша өзүнүн шериктер таблицасына, абал файлына же агым журналына жазат: WireGuard аны акыркы чекит деп атайт, OpenVPN абал файлы аны Real Address деп белгилейт, ал эми strongSwan аны IKE_SAнын алыскы хосту катары билдирет. Бул маани башка булактан пакет келген сайын жаңыртылат, ошондуктан эч ким эч нерсени кайра баштабастан эле өзгөрөт.
Төмөнкү сап — адамдар жаңылышып инсандык доо катары окуган нерсе. Ал сервер конфигурациясындагы орунду белгилейт, адамды эмес, анткени сервер аны өзүнүн пулунан тандаган. Эки колдонуучу ар башка күндөрү бирдей туннель дарегин ала алат, ал эми бирөө эки түзмөктөн экөөнү кармай алат.
Туннель турганда журналга жазылган кортеж эмнеге өзгөрөт
Даректерди которуу — таймери бар таблица, туруктуу байланыш эмес. Үй маршрутизатору акыркы пакеттен кийин UDP картасын бир аз убакыт сактайт, оператор дарбазасы портторду өз графиги боюнча кайра колдонот, ал эми Wi-Fiдан LTEге өткөн телефон такыр башка булак менен кайтат. Бул жерде Linux conntrackтын демейки маанилери пайдалуу өлчөм: nf_conntrack_udp_timeout 30 секунд, ал эми агымдык варианты 120, ошондуктан тынч туннель колдонуучу байкаганга чейин көп мурун картасын жоготушу мүмкүн.
Туннель тирүү калат, анткени протокол даректи эмес, шерикти аутентификациялайт. WireGuard кол алышкандан кийин абалсыз, ошондуктан ар кандай аутентификацияланган пакет сакталган акыркы чекитти жаңыртат жана кайра байлоо кийинки пакетте оңдолот; persistent-keepalive = 25 так ушун үчүн бар — бош турганда картаны жылуу кармоо үчүн. OpenVPNдин --float параметри да ушундай иштейт жана аутентификацияланган кардарга жаңы дарек менен порттон улантууга мүмкүндүк берет. float демейки боюнча өчүк болгон 2.4 жана 2.5 курулуштарында кайра байлоо сессияны кайра коюп, кардар кайра туташат.
IPsec ал жерге көбүрөөк кыймылдуу бөлүктөр менен жетет. IKEv2 NAT аныктоо жүктөрүндөгү булак жана багыт хэштерин салыштырып, которууну байкайт, UDP 4500 инкапсуляциясына өтөт жана keepaliveлерди жаңы кортежге чейин ээрчийт. keepaliveлер тосулганда SA кагазда турган бойдон калат, ал эми бир багыттагы трафик үнсүз токтойт.
Сервер эмнени таандык кыла алат, эмнени албайт
Жок кылууга татыктуу миф — которуу сизди оператордон жашырат деген ой. Ал белгини өзгөртөт, байкоону эмес. Оператордун NATынын артындагы дарбаза 100.64.0.0/10 мейкиндигин же көп абонент бөлүшкөн бир коомдук даректи көрөт жана агымды сертификаттын субъектисине, WireGuardтын ачык ачкычына, берилген туннель дарегине, байт эсептегичтерине жана убакыт терезесине байлай алат. Алардын эч бири сиздин LAN дарегиңизди талап кылбайт.
Чектөөлөр карама-каршы багытта да иштейт. Журналдагы жалпы дарек дарбазага көрсөтөт, үйгө эмес; бир которулган даректен ар башка порттогу эки сессия башка түзмөктөр; порт кайра колдонулса, эки башка күндөгү бирдей дарек эки байланышсыз абонент болушу мүмкүн. Тек шерик ачкычтарын жаза турган сервер аккаунттар базасысыз аларды кардарга байлай албайт, ал эми тек даректерди жаза турган сервер бир маршрутизатордун артындагы ноутбукту телефондон ажырата албайт.
Божомолдоонун ордуна эки учун салыштырыңыз
Эмне болгонун тактоо үчүн бир туташууну эки учта тең бир эле учурда кармап алып, даректи эмес, кортежди салыштырыңыз. Кардар тарапта, кандайдыр бир которууга чейин:
ss -uapn 'dport = :51820'
ip -4 route get 203.0.113.10
wg show wg0 endpoints
Андан кийин маршрутизатордогу же CGNAT дарбазасындагы которуу жазуусун жана серверге акырында эмне жетээрин окуңуз:
conntrack -L -p udp --dport 51820
tcpdump -ni eth0 udp port 51820
Көпчүлүк дал келбестикти үч үлгү түшүндүрөт. Сервердеги булак порту жергиликтүү порттон башка, ал эми багыт дал келсе: кадимки порт которуу. Сервердеги булак дареги сиздики эмес ISP блогунда болсо: жок дегенде бир кошумча NAT катмары. Пакеттер бош тургандан кийин токтоп, жаңы порт менен уланат: картанын мөөнөтү бүттү, маршруттоо катасы эмес. Убакыт белгилери бир-эки секунддан көп алыс болсо, сиз эки башка аракетти салыштырып жатасыз.
Айырма кай жерде баарын бузат
Сервер катасына окшош тыныгуулар адатта ушундан башталат. Үй дарегиңизге бекитилген кирүү эрежеси ISP ижарасы өзгөргөндөн кийин иштебей калат. Которулган дарекке дал келген fail2ban эрежеси ошол дарбазанын артындагы бардык абоненттерди бир убакта бөгөттөйт. Туруктуу алыскы дареги бар сайт-сайт шериги мобилдик байланыш өзгөргөндөн кийин ачкычтарды жаңыртууну токтотот. Туннелдин протоколу жайында эле; сырткы кортеж тууралуу божомол андай эмес эле.
Ошол эле чаташуу сервер тарапта да көрүнөт. Эгер VPN кутусу өзү NATтын артында болсо, портту багыттоо жана иштеген багыттоо жолу керек; strongSwannin багыттоо колдонмосу IPsec үчүн ошол учурду камтыйт. Тек жеке даректе жеткиликтүү сервер өз кардарлары сунуштаган которулган кортежди эч качан көрбөйт, жана бул кардарлардын которулушунан башка маселе.
Ушул төрт текшерүүнү ирети менен өткөрүңүз жана биринчи ийгиликсиз болгон жерде токтоңуз:
- Эки учта тең бир убакта кармаңыз; булак порту, багыт порту жана убакыт белгилери дал келээрин ырастаңыз.
- Сервердин шериктер тизмесинен күткөн даректи эмес, азыр кармап турган даректи окуңуз.
- Жазууну жана анын калган өмүрүн conntrack же NAT таблицасынан текшериңиз.
- Кардардагы туннель интерфейсинин дареги LAN дарегине эмес, сервер берген дарекке дал келээрин ырастаңыз.
Эгер эки кармоо кортеж боюнча макулдашса жана туннель дагы эле иштебесе, которуу сиздин маселеңиз эмес; кол алышууга жана туннелдин ичиндеги маршруттоо таблицасына өтүңүз.