OpenVPN дахь persist-tun ба persist-key үнэндээ юуг даван гардаг вэ
Хоёр сонголт хоёулаа амьд процессын доторх зөөлөн дахин эхлүүлэлтийг хамардаг. Тэд зогсоосны дараа интерфейсийг хадгалдаггүй бөгөөд траффик блоклох бодлого биш.
Үйлчилгээг зогсоох нь persist-tun тохируулсан байсан ч интерфейсийг устгана. Энэ нь сонголт баримтжуулсан ёсоор ажиллаж байгаа бөгөөд алдаа биш. Сонголт нь ажиллаж буй процессын доторх нэг дахин эхлүүлэх замыг тодорхойлдог бөгөөд systemctl stop тэр зам биш.
Хоёр нэрийг хамт уншаарай, загвар тодорхой болно. Нэг нь дескриптор хадгална, нөгөө нь түлхүүрийн материал хадгална, хоёулаа эрх мэдлийг орхины дараа болох зүйлээс болж оршдог.
Хоёр нөөц ба тэдний хамаарах дахин тохируулга
OpenVPN хоёр энгийн нөхцөлд өөрийн дахин эхлэхийг мэдэгддэг. Тодорхой SIGUSR1 үүнийг хийдэг, үхсэн түншээс үүдэлтэй ping-restart мөн адил хийдэг. Хоёулаа процессыг амьд үлдээж, холболтын тохиргоог дахин ажиллуулдаг бөгөөд яг энд сонголтууд байр сууриа олдог.
| Event | TUN/TAP device | Key and auth files | Addresses and routes | up/down hooks |
|---|---|---|---|---|
Soft reset, from SIGUSR1 or from a ping-restart the daemon sends itself | survives only with persist-tun | survive only with persist-key | survive with the device, otherwise rebuilt | run again only when restart hooks are enabled |
Configuration reload, SIGHUP | recreated | re-read from disk | rebuilt once the device returns | run again |
| Service stop | lost | re-read at the next start | removed | run at the next start |
Эдгээр хоёр сонголтын өөрчлөх зүйл бол зөөлөн дахин тохируулгын мөр л юм, харин тэдний алгасах ажил нь завгүй холбоос дээр үнэтэй хэсэг юм. Төхөөрөмжийг дахин нээх нь түүнд холбогдсон хаяг, маршрутыг эвддэг, тэдгээрийг дахин байгуулах нь дахин эхлэх үед замд байсан пакетуудыг унагаж болно. Зогсоох нь мөнөөх объектуудыг хадгалах ямар ч сонголтгүйгээр устгадаг.
Эдгээр сонголтууд яагаад огт байдаг вэ
Хатуужуулсан OpenVPN сервер ихэвчлэн root байдлаар эхэлж, түлхүүр, төхөөрөмжөө нээгээд, дараа нь эрхгүй хэрэглэгч рүү шилждэг. Тэр шилжилтийн дараа зарим үйлдэл зүгээр л алга болдог. 0600 горимтой түлхүүрийн файл унших, сүлжээний интерфейс үүсгэх эсвэл маршрут өөрчлөх нь бүгд татгалзагдаж болно.
persist сонголтгүй бол ping-restart үүсгэхэд хангалттай удаан дуугүй байх түнш яг тэр үйлдлүүдийг албадана. Тохиргоонд юу ч өөрчлөгдөөгүй байсан ч дахин холбогдох нь бүтэлгүйтнэ. Процесс шалтгаангүй үхэж байгаа мэт харагдана, бүртгэл сүлжээний алдааны оронд зөвшөөрлийн алдаа харуулна.
Тэдгээртэй хамт зөөлөн дахин эхлэл нь эрх мэдэлтэй үе шат аль хэдийн олж авсан зүйлийг дахин ашигладаг. Ямар ч ид шид байхгүй бөгөөд процесс юу ч даван гардаггүй. Нөөцийг олж авах нь зүгээр л хойшлогддог.
Сүүлчийн биш, эхний алдааг уншаарай
Дахин эхлэл бүтэлгүйтвэл сүүлчийнхээс илүү эхний алдааг уншаарай. Хамгаалагдсан түлхүүр, auth файл, интерфейсийн ioctl ба гадаад дэгээ нь дөрвөн өөр нөөц юм. Нэгийг хадгалах нь бусдад хандах талаар юу ч хэлэхгүй. Галт ханын хэрэгслийг дууддаг дэгээ нь тухайн хэрэгслийн шаарддаг эрх мэдлийг одоо ч шаарддаг.
Дэгээнүүд өөрийн гэсэн унтраалгатай. OpenVPN гарын авлага persist сонголтуудыг up-restart-той хослуулдаг бөгөөд энэ нь дахин эхэлсний дараа up ба down скриптүүд дахин ажиллах эсэхийг шийддэг. Тиймээс дээрээ үлдсэн интерфейс нь таны resolver интеграци шинэчлэгдсэн эсэхийг юу ч хэлэхгүй.
# which restart path just happened?
journalctl -u openvpn-client@office --since '10 min ago' | grep -E 'SIGUSR1|ping-restart|Restart pause|NOTE:'
# did the interface survive, and do its routes still exist?
ip -brief link show tun0
ip route show dev tun0
Энэ хоёр команд нь хоёр бүтэлгүйтлийн горимыг секундэд ялгадаг. Байгаа боловч маршрут дутуу интерфейс бол дэгээ эсвэл маршрутын асуудал. Алга болсон интерфейс нь процесс үнэхээр дууссан гэсэн үг.
Хадгалсан интерфейс нь kill switch биш
Хэрэв шаардлага нь траффик хэзээ ч туннелийн гадна гарахгүй байх бол, хадгалсан төхөөрөмж үүнийг өгдөггүй. Нөгөө хаягийн гэр бүлийн маршрутууд, хоёр дахь анхдагч маршрут, процесс бүрэн гарах тохиолдол бүгд сонголтын хүрээнээс гадуур үлддэг.
Хоёр шаардлагыг тусад нь авч үзээрэй. Туннелийн объектыг дахин холбогдолын хооронд хадгалах нь демонд тав тух юм. Туннель унтарсан үед гарахыг блоклох нь өөрийн дүрэм, өөрийн шалгалттай галт ханын бодлого юм. Тэдгээрийг хольсон нь хамгаалалт мэт харагдаж, хамгийн сайн оролдлогын дахин холболт мэт ажилладаг тохиргоог бий болгодог.
Оношлохоос өмнө үйл явдалд нэр өгөөрэй. Зөөлөн дахин эхлэл, бүтэлгүй холболтын оролдлого, үйлчилгээг зогсоох нь гурван зан төлөвтэй гурван үйл явдал бөгөөд зөвхөн эхнийх нь эдгээр сонголтын тодорхойлдог зүйл юм.