VPN маршрутындағы келесі секіріс: қақпа неге жергілікті түрде қолжетімді болуы керек
Маршруттың via мекенжайы сіз жіберетін буында қолжетімді болуы керек. Тапсыруды қадағалаңыз, іздеуді тексеріңіз және трафикті ұстаған хосттан сынаңыз.
VPN желісіне баратын маршрут шатастыруға оңай екі мекенжайды алып жүреді: пакет жетуге тырысатын тағайындау префиксі және оны бір қадам жақындататын келесі секіріс. LAN хостында бұл келесі секіріс сол буында шынымен жете алатын маршрутизатор болуы керек. Қашықтағы VPN мекенжайы келесі секіріс емес, ол сіздің ойыңыздағы тағайындауға қаншалықты дәл сәйкес келсе де.
Бұл нұсқаулық қарапайым жағдайды қамтиды: 192.168.20.0/24-дегі ноутбук, LAN мекенжайы 192.168.20.5 болатын VPN қақпасы және сол қақпаның артындағы қашықтағы желі 10.70.0.0/24. Төмендегі барлық командалар, егер өзгеше айтылмаса, сіз ноутбукте деп есептейді.
Екі мекенжай, бір маршрут
Көзделген жазба — 10.70.0.0/24 via 192.168.20.5. Префикс пакеттің қайда баратынын айтады; via мекенжайы оны сол жерге кім апаратынын айтады. Ядро қақпасына сіз атаған интерфейс арқылы жете алмайтын маршрутты орнатудан бас тартады, және бұл бас тарту — бүкіл мән: қолжетімді болу үшін туннель қажет келесі секіріс туннельді салатын келесі секіріс бола алмайды.
Сондықтан бірінші тексеру «қақпа жұмыс істеп тұр ма» емес, «қақпа осы буында ма». Ноутбуктің өз ішкі желісі, оның ARP немесе көрші жазбасы және маршруттағы интерфейс — бәрі сәйкесуі керек. Тек 10.70.0.0/24 ішінде ғана бар мекенжай екінші маршруттың тағайындауы бола алады, бірақ біріншісінің via ешқашан бола алмайды.
Келесі секіріс қақпаны неге міндеттейді
Маршрутты ноутбукке орнату тек бірінші тапсыруды шешеді. Содан кейін қақпаға өз жолы қажет: қосылған қайта бағыттау, 10.70.0.0/24 үшін туннель маршруты және кімнің пайдалана алатынын айқындайтын кез келген қатынау саясаты. Linux-те бұл net.ipv4.ip_forward=1 және туннель маршруты; оның алдындағы қауіпсіздік қабырғасына қайта бағытталған ағынға рұқсат беретін ереже қажет.
Қайтару бағыты — адамдар ұмытатын бөлік. Қашықтағы жақта 192.168.20.0/24 жаққа қайтару маршруты болуы керек, немесе дизайн ноутбуктің көзін қашықтағы жақ білетін нәрсеге айналдыруы керек. Қақпадан жұмыс істейтін ping қақпаның қашықтағы желіге жете алатынын дәлелдейді; ол ноутбуктің пакеттері қайтар жолда аман қала ма, ол туралы ештеңе айтпайды.
Іздеуді жіберетін хосттан тексеріңіз
Ядродан қай келесі секірісті таңдайтынын сұраңыз және жауаптағы интерфейсті оқыңыз:
ip route get 10.70.0.10
ip route show 10.70.0.0/24
ip neigh show 192.168.20.5
Егер іздеу қақпа мен LAN интерфейсін хабарласа, бірінші бөлік көзделгендей конфигурацияланған. Егер ол туннель құрылғысын хабарласа, кестеде неғұрлым ертерек нәрсе нақтырақ және жеңіп тұр. Егер маршрут мүлде орнатылмаса, ядро қақпаның қолжетімсіз екенін айтады, және бұл хабарлама кез келген пакетті ұстаудан пайдалырақ.
Содан кейін сынақты дұрыс жерден қайталаңыз. Қақпада жасалған сұрау қақпаның өз көз мекенжайын пайдаланады, бұл жоғалған қайтару маршрутын немесе тек белгілі көздерге рұқсат беретін саясатты жасыруы мүмкін. ip-route нұсқаулығы тағайындауды, қақпаны және onlink қайта анықтауын бөледі, және қайта анықтауды қолданбас бұрын оны түсінуге тұрарлық.
Қолжетімділікті жалған көрсету үшін onlink қолданбаңыз
onlink ядроға қақпаның қолжетімділік тексеруін өткізіп жіберіп, бәрібір сонда жіберуді айтады. Ол жол жасамайды, жоқ мекенжай үшін ARP шешпейді және қашықтағы маршрутизаторды сіздің Ethernet сегментінде жауап беруге мәжбүрлемейді. Ол жауап беретін, бірақ қосылған ішкі желіде отырмайтын қақпалар үшін заңды, ал сіз түсіндірмеген қатені үнсіз қалдыру үшін қолданылса — тұзақ.
Егер маршрут тек onlink-пен орнатылса, келесі сұрақ — қақпа неге сіз ойлаған жерде емес. Қате VLAN, қате интерфейстегі екінші мекенжай немесе соңғы октеттегі қате басу — осының бәрі мұны тудырады, және олардың әрқайсысы трафик аға бастағанда қайтару жолын да бұзады.
Нүкте-нүкте туннельдері Ethernet емес
Туннель құрылғысы ARP жасамайды және көбіне көршілердің мәнді ішкі желісі болмайды. Оның маршруттары жиі 10.70.0.0/24 dev tun0 сияқты көрінеді, мүлде via-сыз, өйткені әріптес — жалғыз екінші шеткі нүкте. LAN стиліндегі via-ні сол кестеге көшіру ядро қабылдамауы мүмкін маршрутты немесе, одан да жаманы, әріптес ешқашан жауап бермейтін мекенжайға сілтейтін маршрутты тудырады.
Нұсқаулықта екі модельді бөлек ұстаңыз: LAN маршрутының қолжетімді қақпасы бар, туннель маршрутының интерфейсі мен әріптесі бар. WireGuard, OpenVPN және IPsec бәрі сәл өзгеше пішіндерді көрсетеді, сондықтан бір хосттан жалпылаудың орнына шынымен қолданған пішінді жазып алыңыз.
Қосыңыз, растаңыз, кері қайтарыңыз
Бүкіл өзгеріс — үш команда және бір тексеру, және ол дәл осы тәртіппен жазылуы керек:
sudo ip route add 10.70.0.0/24 via 192.168.20.5
ip route get 10.70.0.10
ping -c 3 10.70.0.10
sudo ip route del 10.70.0.0/24 via 192.168.20.5
Жолды растаңыз, бір тағайындауды растаңыз, содан кейін өзгеріс хостты сіз болжамаған түрде қолжетімсіз етсе, жою жолын дайын ұстаңыз. Егер маршрут қайта жүктеуден кейін сақталуы керек болса, оны shell профиліне емес, хосттың желілік конфигурациясына қойыңыз және оған сенбес бұрын қайта жүктеуді сынаңыз. Тек өзін қосқан shell-де ғана бар маршрут — екі рет жөндейтін маршрут.