VPN кардарлары туташат, бирок интернет жок: үч жетишпеген бөлүк
ping-ке жооп берген туннелге дагы эле өткөрүү, которуу жана өткөрүү эрежеси керек. Кардарды кайра түзөтүүдөн мурун үчөөнүн кайсынысы жетишпей жатканын аныктаңыз.
Кардар дарек алат, сервер ping-ге жооп берет, бирок ар бир барак убакыт чегинен өтөт. Көпчүлүк ушул учурда кардар профилин түзөтө башташат, бул адатта бекер эмгек: туннел көтөрүлгөндөн кийин сервер маршрутизатор сыяктуу иш кылышы керек. Пакет чыгып, жооп кайтып келгенге чейин үч шарт бир убакта аткарылышы керек, жана кайсынысы жетишпесе да белги бирдей.
Иштеп жаткан туннелдин эмнеге сыртка чыгуучу жолу жок
Ядро пакеттерди интерфейстердин ортосунда өткөрүшү керек, бул көпчүлүк Linux бөлүштүрмөлөрүндө демейки боюнча өчүк. Трафик сырткы дүйнө жооп бере алган дарекке которулушу керек, эгер ар бир жогорку маршрутизатор туннелдин кошумча тармагына кайтуучу жолду мурунтан билбесе. Брандмауэрдин өткөрүү жолу трафикти эки багытта тең уруксат бериши керек, жоопторду кошкондо.
Алардын ар бирин өзүнчө оңдоого болот, жана бул — капкан. Которуу эрежесиз өткөрүүнү күйгүзүү пакеттердин жеке булак менен жана кайтуу жолу жок чыгышына алып келет. Өткөрүү эрежесиз которууну кошуу ядронун пакетти бир кадам кийин таштоосуна алып келет.
Ошондуктан кардарды эмес, үч катмарды текшериңиз жана натыйжанын мааниси болушу үчүн бир убакта бирөөнү өзгөртүңүз.
Өткөрүү — туруктуу кылуу керек болгон ядро ажыраткычы
Өзгөртүүдөн мурун учурдагы маанини текшериңиз, анан аны коюп, өзгөрүү күчүнө киргенин ырастаңыз.
sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
sysctl net.ipv4.ip_forwardБиринчи буйрук учурдагы маанини билдирет, экинчиси аны иштөө убагында коёт, үчүнчүсү жазуу иштегенин далилдейт. Иштөө убагындагы маани кийинки кайра жүктөөдө жоголот, ошондуктан иштеп жаткан сессия тейлөөдөн кийин эч кандай конфигурация өзгөрүүсүз бузулушу мүмкүн.
Аны /etc/sysctl.d/ астындагы файлда туруктуу кылыңыз, анан билүү үчүн кайра жүктөөнүн ордуна ошол файлды колдонуңуз. FreeBSD'де барабардыгы — net.inet.ip.forwarding, ал эми туруктуулук үчүн rc.conf ичиндеги gateway_enable=YES. Өткөрүү өчүк деп билдирген түзмөк «пакеттер келет, бирок эч нерсе кайтпайт» деген отчеттордун бүт тобун түшүндүрөт. Ар бир жаңыртуудан кийин да параметрди текшериңиз, анткени кайра курулган ядро же алмаштырылган түзмөк сүрөтү аны эч кимге айтпастан кайра коюшу мүмкүн.
masquerade же бир бекитилген которуу дарегин тандаңыз
Динамикалык сырткы дарек менен masquerading — эң жөнөкөй туура форма. Туннелдин кошумча тармагын булак, сырткы интерфейсти чыгуу деп атаңыз.
iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -o eth0 -j MASQUERADEСтатикалык коомдук дарек менен булакты дал ошол дарекке которуу болжолдуураак жана текшерүүгө оңой.
iptables -t nat -A POSTROUTING -s 10.9.0.0/24 -j SNAT --to-source 198.51.100.10Экинчи форма тейлөө капканын алып жүрөт: кийин өзгөрүүчү катуу коддолгон дарек туннелди иштетип турат, ал эми интернетке кирүү үнсүз токтойт. Же masquerade колдонуңуз, же провайдер сизди жылдырганда эрежени жаңыртыңыз. Интерфейс да маанилүү, анткени өзүнүн жогорку туннелин бөлүшкөн маршрутизатор физикалык WAN аркылуу эмес, ошол туннел аркылуу которушу керек.
Чыпкалоо таблицасы — үчүнчү дарбаза
Өткөрүү да, которуу да туура болушу мүмкүн, бирок пакет чыпкалоо таблицасында өлөт. ufw көп күнөөлүү: анын өткөрүү саясаты DROP катары келет, ал эми калган конфигурация толук туура көрүнүшү мүмкүн, ошол бир жөндөө трафикти өлтүрөт. Аны көтөрүү — белги кутучасы эмес, аң-сезимдүү коопсуздук чечими.
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTБиринчи эреже туннелден сыртка жаңы трафикке уруксат берет, экинчиси жооптордун гана кайтышына. Экөөнү тең туннелдин кошумча тармагына жана көздөлгөн жерге чектеңиз, анткени туннел интерфейсиндеги жалпы уруксат VPN'ди аутентификациядан өтө алган ар ким үчүн ачык чыгуу чекитине айландырат.
Көпүрөлөнгөн туннел башка жоопту талап кылат. Дарек физикалык портко эмес, көпүрөгө таандык, ошондуктан интерфейсти баш ийдирүү анын мурунку дарегин алып салат жана көпүрө өзү дарек алганга чейин хост жеткиликсиз көрүнөт, аны dhclient br0 бере алат. Бул бузулуу VPN маселесине окшош, бирок экинчи катмардын маселеси. Брандмауэрге тийүүдөн мурун көпүрөнүн өз дарегин текшериңиз, анткени чыпкалоо өзгөрүүсү жөнөтүүчү дареги жок хостту оңдой албайт.
Барак эч качан жүктөлбөсө, кайда кароо керек
Туннел бар экенин далилдөө үчүн сервердин туннел дарегине ping жибериңиз. Анан кардардан коомдук дарекке traceroute иштетип, кайда токтой турганын окуңуз: серверде пакет жетет, бирок өткөрүлбөйт же которулбайт; серверден ары маселе жогорку жакта жана сиздин колуңузда эмес.
ping -c 3 10.9.0.1
traceroute -n 198.51.100.10Биринчи буйрук туннел трафикти сервердин өзүнө алып барышын далилдейт, экинчиси пакет сыртка канчалык алыс жетээрин көрсөтөт. Туннел дарегинде бүткөн из сервердеги өткөрүүгө же которууга көрсөтөт, ал эми бир секириктен кийин токтогон из провайдерге же жогорку маршрутизатордун кайтуу жолуна көрсөтөт.
Серверде кардар барак жүктөп жатканда сырткы интерфейсти байкаңыз. Жеке булак дареги менен чыккан трафик которуу жетишпей жатканын билдирет, ал эми жооптун таптакыр жоктугу өткөрүү жолу же жогорку кайтуу маршруту аны таштап жатканын билдирет.
Эгер алыскы кардарлар сервердин LAN'ындагы хостторго да жетүүсү керек болсо, LAN'га туннелдин кошумча тармагына кайтуучу маршрут керек экенин унутпаңыз. Бул которуу эмес, маршруттоо, жана интернет жолу акыры иштегенден кийин эң көп унутулган кадам — ушул.