OpenVPN'ге туташтыңыз, бирок эч нерсе жүктөлбөйт: кардардан сыртка карай жүрүш
Туннель көтөрүлгөн, бирок браузер дагы эле айланып турат. Кардардан сыртка карай жүрүңүз: эки кармоо, ядродогу бир которгуч, чыныгы чыгуу интерфейси, анан DNS.
Кардар терезесинде Connected деп жазылган, туннелдин дареги бар, ал эми браузер дагы эле айланып турат. Бул айкалыш кадимки, анткени ийгиликтүү кол алышуу туннелдин курулганын гана далилдейт; ал сервер сиздин пакеттериңизди өткөрүп береби, алардын булагын кайра жазабы же DNS сурамдарыңызга жооп береби — бул тууралуу эч нерсе айтпайт. Көпчүлүктүн катасы — адегенде сервердин конфигурациясын ачуу. Анын ордуна кардардан сыртка карай иштеңиз, анткени төмөнкү ар бир кадам кийинкисин текшерүүнүн кереги бар-жогун айтат.
Кардардан баштап сыртка карай жүрүңүз
Ушул тартипте үч сыноо жүргүзүңүз жана биринчиси кайда ийгиликсиз болорун жазып алыңыз. Сервердин туннел дарегине ping жасаңыз, бул туннелдин өзү трафикти ташып жатканын далилдейт. Ачык дарекке номери боюнча ping жасаңыз, бул атты чечүүнү кошпой эле өткөрүп берүүнү жана которууну далилдейт. Анан хост атын чечүүгө аракет кылыңыз, бул DNS колдонгон жалгыз сыноо. Ар бир жыйынтык шектенүүдөн бүтүндөй бир катмарды алып салат.
Браузер тезирээк сезилет деп үчүнчү сыноого секирип кетпеңиз. Ийгиликсиз барак жүктөө үч катмарды тең бирден жабат, жана дал ошондон баштап адамдар кийин иштеп жаткан туннелди кайра курат. Ийгиликсиз барак үчөөнүн кайсынысы бузулганын айтпайды.
Эки кармоо пакеттердин кайда токтогонун көрсөтөт
Кардардан ачык дарекке ping жүрүп жатканда туннел интерфейсинде бир, интернетке чыгышы керек болгон жогорку каналда экинчи кармоо алыңыз. Убакыт белгилери дал келиши үчүн экөөнү тең бир убакта иштетиңиз.
sudo tcpdump -ni tun0 -c 20 icmp
sudo tcpdump -ni enp1s0 -c 20 icmp
Эгер сурамдар туннелде пайда болуп, жогорку каналда эч качан көрүнбөсө, сервер аларды туннел менен зымдын ортосунда таштаган, ал эми себеби — өткөрүп берүү же өткөрүп берүү коргоо дубалынын саясаты, NAT эмес. Эгер экөөндө тең көрүнсө, сервер өз бөлүгүн аткарган жана жооп андан ары жоголгон, бул которууга, жогорку чыпкага же провайдер тараптан чектөөгө багыттайт.
Жогорку каналдын атын окуу китебинен эмес, маршруттоо таблицасынан алыңыз. Буллут сүрөттөрү жана аты өзгөртүлгөн адаптерлер колдонмодогу мисал интерфейске сейрек дал келет, ал эми туура эмес түзмөктө алынган кармоо өткөрүп бербеген серверге так окшош:
ip -4 route get 9.9.9.9
Ошол чыгыштагы dev талаасы — NAT эрежесине кийин керек боло турган ат, ошондуктан аны сактап калыңыз.
Өткөрүп берүү — ядродогу которгуч жана коргоо дубалынын саясаты
Ядро жалпысынан өткөрүп берүүгө макул болушу керек. Азыркы маанини окуңуз, анан жөндөөнү убактылуу гана иштеп жаткан ядрого жазуунун ордуна туруктуу кылыңыз:
sysctl net.ipv4.ip_forward
printf 'net.ipv4.ip_forward=1\n' > /etc/sysctl.d/70-vpn-forward.conf
sysctl --system
Өткөрүп берүү — жарымы гана. UFW колдонгон хостто өткөрүп берүү саясаты /etc/default/ufw ичинде коюлат жана кайра жүктөө күчүнө киргенге чейин ACCEPT болушу керек. Өткөрүп берүү жолундагы демейки таштоо кол алышууну толук соо калтырып, туннелден чыгууга аракет кылган ар бир пакетти унчукпай таштайт, жана бул сиз баштаган белгинин дал өзү.
nftables'ти түздөн-түз башкарып жаткан хосттор ошол эле суроого башка синтаксисте туш болушат. Кардардын сыноосу жүрүп жатканда өткөрүп берүү чынжырынын эсептегичтерин караңыз, анткени суралган чынжыр менен таштаган чынжыр конфигурация файлында бирдей көрүнөт.
NAT эрежесинде чыныгы чыгуу интерфейсин атаңыз
Булакты которуу хосттон чынында эле чыккан интерфейске, сервер бөлүп берген пул менен кошо таандык. Бул эреженин эки жарымы тең чындыкты сүрөттөшү керек, жана экөө тең милдеттүү.
iptables -t nat -A POSTROUTING -s 10.44.0.0/24 -o enp1s0 -j MASQUERADE
Классикалык ийгиликсиздик — колдонмодон көчүрүлгөн, адаптери башка аталган машинада -o eth0 деген эреже. Эреже эскертүүсүз орнотулат, эч нерсеге дал келбейт, ал эми кардарда интернет жок. Пул — ошол эленин экинчи жарымы: эгер сервер 10.44.0.0/24 берсе, ал эми эреже 10.8.0.0/24 камтыса, эч нерсе эч качан дал келбейт.
Эреженин текстине ишенүүнүн ордуна эсептегичтерди караңыз. Тизме ар бир эреже боюнча пакеттерди билдирет, ал эми эч качан дал келбеген эреже канчалык туура көрүнсө да нөлдө кала берет. Ошол сандан бир нерсе чыгарардан мурун ага бир мүнөттүк чыныгы кардар трафигин бериңиз:
iptables -t nat -L POSTROUTING -v -n
Чыныгы кардар сыноосунан кийин нөл пакет эсеби дал келүү туура эмес экенин билдирет, туннелдин бузулганын эмес. Дал келе баштаганда эрежелер жыйнагын сактаңыз, ал кайра жүктөөгө чыдасын; shell тарыхында гана жашаган оңдоо биринчи кайра жүктөөдө жок болот.
Эгер сервер буллуттук NAT үлгүсү да болсо, платформанын да сөзү бар. Даректерди которгон үлгү адатта провайдер ошол жөндөөнү сунуштаган жерде булак жана багыт текшерүүсүн өчүрүүнү талап кылат, ал эми VPN порту өзү сырттан жеткиликтүү болушу керек.
DNS — биринчисинин артындагы экинчи ийгиликсиздик
Дарек боюнча ping иштеп, аттар ийгиликсиз болсо, бул чечүүчүнүн маселеси, жана анын өз себеби бар. Жергиликтүү чечүүчүсүн сактаган кардар бул сурамдарды толук туннелге жөнөтүп, эч качан келбеген жоопту күтөт, анткени жергиликтүү чечүүчү азыр маршруттун туура эмес тарабында.
Кардар кайдан сурашты билиши үчүн серверден чечүүчү жөнөтүңүз. Эки жазуу биринчиси жеткиликсиз болсо кардарга алтернатива берет, жана экөө тең туннел чынында эле уруксат берген чечүүчүлөр болушу керек.
push "dhcp-option DNS 9.9.9.9"
push "dhcp-option DNS 149.112.112.112"
Windows кардарлары кийин баары бир жергиликтүү чечүүчүгө кайтышы мүмкүн, жана block-outside-dns дал ушундан сактоо үчүн бар, бирок анын баасы — жергиликтүү тармак гана чече алган аттардан ажыроо. systemd-resolved колдонгон Linux кардарлары скрипт орнотпосо, жөнөтүлгөн чечүүчүнү көбүнчө этибарга албайт, ошондуктан жөнөтүү этибарга алынбады деп корутунду чыгарардан мурун туннел түзмөгү үчүн resolvectl status текшериңиз.
Жүрүштү колдонуучу сезгендей бүтүрүңүз. Кардардан чыныгы барак жүктөңүз, ал кайсы даректен чыгып жатканын тастыктаңыз, серверди кайра жүктөңүз, кайра туташыңыз жана үч сыноону кайталаңыз. Ушул экинчи айлана гана сакталган эрежелердин, коргоо дубалынын саясатынын жана жөнөтүлгөн чечүүчүнүн баары чогуу аман калганын далилдейт.