OpenVPNдин маршруттагы "File exists" катасы файл маселеси эмес
Билдирүү файл системасынан эмес, ядронун маршрут таблицасынан келет. LAN саясатын өзгөртүүдөн мурун префиксти ээлеп турган жазууну окуңуз.
Билдирүү чыккан жерден баштаңыз. Клиент туташат, туннель көтөрүлөт, анан журнал Linuxтын маршрут кошуу буйругу File exists менен ишке ашпаганын билдирет. Бул сүйлөмдө сертификатка, ачкычка же конфигурация файлына тиешелүү эч нерсе жок, бирок сөздөр ушундай кыйытма берет. Ядро өзүнүн маршрут таблицасын сүрөттөп жатат, жана сиз орнотууну сураган префикстин жазуусу мурунтан бар.
Клиенттин өз ырааттуулугун карманыңыз: эмнени сурады, таблицада эмне бар болчу, ошол жазууну ал жерге ким койду, жана ошондон кийин гана эмнени өзгөртүү керек. Ар бир кадам бир мүмкүн болгон ээсин алып салат.
Клиент чындыгында эмнени сураган
Ийгиликсиздиктен мурун клиент кошкону жаткан маршрутты жазат, адатта багыт, тармактык маска, шлюз жана кээде метрика же таблица катары. Ошол сап — суроо. Андан кийинки ката — ядронун ага жообу, экөөнү катар окуу керек.
journalctl -u openvpn-client@office -b --no-pager | grep -nE 'route|File exists'
openvpn --config /etc/openvpn/client/office.ovpn --verb 4 --log /tmp/ovpn.log
Маршрут жардамчысынын нөлгө барабар эмес чыгуу статусу анын астындагы тексттен аз маалымат берет, анткени ар кандай ядро жооптору нөлгө барабар эмес статус берет. Так билдирүүнү сактаңыз; бар жазуу менен жеткиликсиз шлюздун ортосундагы айырма кийинки бөлүмдөрдүн кайсынысы колдонуларын аныктайт.
Бар маршрутты окуңуз, жалгыз даректи эмес
Таблицадан ошол чекиттүү төрттүктү издөө жетишсиз. Маршрут объектиси дарек үй-бүлөсү, таблица, багыт префикси, метрика, протокол жана чыгуу түзмөгү менен аныкталат, жана префиксти бөлүшкөн жазуулар бул атрибуттар айырмаланганда мыйзамдуу түрдө катар жашай алат. Кагылышкан нерсе — бүт объект, текст эмес.
ip -4 route show table all | grep -F '10.40.'
ip -4 route show match 10.40.0.0/16
ip -4 route get 10.40.0.5
Акыркы буйрук алгачкы экөөнөн башка суроого жооп берет: эмне бар экенине эмес, ядро ошол багыт үчүн азыр кайсы жазууну тандай турганына. Эки көз караш тең пайдалуу жана алар тыянак чыгарардан мурун салыштырууга татыктуудай тез-тез айырмаланат. Алардын ортосундагы дал келбестик — кызыктуу учур, тегеректөө катасы эмес.
Ийгиликсиз суроонун жанына префиксти, таблицаны, метриканы жана түзмөктү жазып коюңуз. Эгер бар жазуунун атрибуттары жана кийинки секирүүсү бирдей болсо, сизде маршруттоо маселеси эмес, кайталанган көрсөтмө бар.
Префикстин болушу мүмкүн болгон төрт ээси
Туташкан маршруттар дайындалган даректен келет жана ошол дарек бар болгон сайын система аларды кайра түзөт. DHCP клиенти же туташуу менеджери маршруттарды өзүнүн жашоо циклинин бөлүгү катары орнотот. Башка VPN клиенти ошол эле префиксти мурунтан алып жүрүшү мүмкүн. Ал эми жергиликтүү илгич же скрипт башка эч нерсе билбеген маршрутту кошо алат.
Ар бир ээси башка оңдоону талап кылат. Туташкан маршрутту сиз өчүрө албайсыз; аны алып салуу туннель колдонууга жарактуу боло электе жергиликтүү жеткиликтүүлүктү бузушу мүмкүн, ал эми ядро аны кайтарат. Менеджерге таандык маршрутту ошол менеджер аркылуу өзгөртүү керек, кийинки кайра туташуу жокко чыгара турган кол менен жасалган ip route del менен эмес.
Сакталып калган интерфейс ошол эле баш аламандыкты жеңилдетет. Туннель түзмөгү кайра туташуудан аман өтсө, ыңгайлаштырылган орнотуу коду орноткон маршруттар экинчи аткарууда да болушу мүмкүн, ошондуктан таза абалды болжолдогон скрипт экинчи жолу ийгиликсиз болуп, биринчи жолу иштейт. Же эскирген жазууну атайын тазалаңыз, же орнотуу кодун идемпотенттик кылыңыз.
block-local башка суроого жооп берет
Профиль бардык трафикти туннель аркылуу жибергенде, клиент жергиликтүү тармак менен эмне болорун чечиши керек. block-local желеги жергиликтүү LANды туннель аркылуу багыттоо менен бул чечимди өзгөртөт, ошол эле учурда LAN шлюзу үчүн документтелген өзгөчөлүктү сактайт; бул жеткиликтүүлүккө көрүнүктүү таасири бар трафик саясатынын тандоосу.
Бул маршрут кошуу эмне үчүн бар жазуу катасын кайтарганын түшүндүрбөйт, жана аны универсалдуу оңдоо катары кабыл алуу чыныгы карама-каршылыкты саясат өзгөртүүсүнүн артына жашырат. Профилди оңдогондон кийин жергиликтүү ресурстарыңыз жеткиликсиз болуп калса, бул желег адегенде текшериле турган нерселердин бири; ал эми маршрут кошуу ийгиликсиз болсо, бул жооп эмес.
Аны кайсы багыттар жергиликтүү бойдон калаары тууралуу атайын кабыл алынган жана жазылган чечим катары караңыз. Журнал кооптуу көрүнгөндө сынап көрүүчү которгуч эмес.
Циклди жабыңыз: кайталоону анын булагынан жок кылыңыз
Жазууну кайсы ээси кармап турганын билгенден кийин, кайталанган көрсөтмөнү ал аныкталган жерден жок кылыңыз. Бул профилдеги route сабы, серверден келген push же эми иштетүүнүн кереги жок илгич болушу мүмкүн.
ip -4 route show match 10.40.0.0/16
ip -4 route get 10.40.0.5
journalctl -u openvpn-client@office -b --no-pager | tail -n 15
Анан кайра туташып, үч нерсени ырастаңыз: туннель көтөрүлөт, көздөлгөн багыт сиз каалаган жолго чечилет, жана ийгиликсиздик жок болуп, анын ордуна жаңысы чыкпайт. Туура эмес тандалган жол менен таза журнал — оңдоо эмес.
Эгер префикс бир тарапта жергиликтүү LANды, экинчи тарапта алыскы тармакты билдирсе, маселе кайталоо эмес, даректердин кабатташуусу, жана эч кандай өчүрүү эки маанини тең бир убакта чындык кыла албайт. Бул учур эки тармактын бири үчүн башка планды талап кылат. Экөөнө тең кол тийгизгенге чейин кайсы тарап кайра номерленерин чечиңиз.