Алсын гарц дахин ачаалж, нэг минутын дотор буцаж ирдэг, харин локал strongSwan daemon ажилласаар байх үед туннель доошоо хэвээр байна. ESTABLISHED-ыг хайж daemon-ыг дахин ачаалдаг cron ажил эцэст нь үүнийг далдалж, машины бүх холбоогүй туннелийг тасалдуулахын зэрэгцээ бүтэлгүйтсэн туннелийг алдаж магадгүй. Сэргээх нь буцаж ирэх ёстой холболтод хамаарах бөгөөд reload-ыг даван туулах тохиргоонд илэрхийлэгддэг. Энэ runbook үүнийг нэг холболтод тохируулж, үр дүнг нэрээр батална.

Глобал дахин ачааллыг орхи, түүний нотолгоог хадгал

Daemon-ыг дахин ачаалах нь хоёр тодорхой дутагдалтай: энэ нь холболт бүрийн төлөвийг устгаж, аль үйл явдал үнэхээр бүтэлгүйтсэнийг хэлж өгдөггүй. Таны хайсан статус текст өөр холболтоос ирсэн байж болох бөгөөд шаардлагатай child ямар ч зүйл үүнийг ажиллуулаагүй тул сул зогссон.

Юу ч өөрчлөхөөс өмнө ачаалсан холболт болон идэвхтэй холбоодыг уншаарай, ингэснээр peer буцаж ирсний дараа харьцуулах өмнөх зураг танд байх болно.

swanctl --list-conns
swanctl --list-sas

Эхлэл болон дахин оролдлогыг буцаж ирж буй холболт дээр тавь

swanctl.conf байршуулалтад эдгээр тохиргоо нь глобал бодлогод биш, холболт болон child түвшинд амьдардаг. Доорх хэсэг нь саналууд, таних, селекторууд аль хэдийн зөв гэж үзсэн эхлүүлэгчийн талын жишээ юм.

connections {
    branch {
        keyingtries = 0
        dpd_delay = 30s
        children {
            private-lan {
                start_action = trap|start
                dpd_action = restart
            }
        }
    }
}

start_action нь child ачаалагдах үед юу болохыг шийддэг: start тэр даруй эхэлдэг, trap нь тохирох трафик гарч ирэх үед эхлэлийг өдөөдөг бодлогыг суулгадаг. trap|start бичихэд strongSwan 5.9.6 буюу түүнээс шинэ хувилбар шаардлагатай тул мөрийг хуулахаас өмнө хувилбарыг шалгаарай. dpd_action=restart нь peer үхсэн гэж зарласны дараа шинэ хэлэлцээг шаарддаг, холболтын түвшний keyingtries=0 нь амжилт эсвэл байнгын алдаа хүртэл нэмэлт оролдлогыг зөвшөөрдөг. IKEv2-ийн дор dpd_timeout огт нөлөөгүй, учир нь peer хэзээ хариу өгөхгүй байгааг ердийн дахин дамжуулалт шийддэг.

Тухайн жишээн дэх саатал нь эхлэх цэг бөгөөд бүх нийтийн хугацаа биш. Peer-ийн дахин ачаалол хэр удаан үргэлжлэх, хэдий хэмжээний дахин дамжуулалтыг тэвчихэд бэлэн байгаагаас хамааран сонгоорой.

Ямар үйл явдлаас сэргээж байгаагаа мэдээрэй

Гурван гэмтэл самбар дээр ижил харагдаж, өөр өөр тохиргоо шаарддаг. Хэзээ ч өргөгдөөгүй анхны холболт нь тохиргоо эсвэл хүртээмжийн асуудал юм. Хариу өгөхөө болилсон peer бол DPD-ийн тохиолдол. Peer тодорхой хаасан child нь DPD хэзээ ч ажигладаггүй, өөрийн close_action-тай бодлогын үйл явдал юм. Тасалдлын эргэн тойрон дахь лог уншихад гуравын аль нь болохыг хэлж өгнө, хариулт нь засварыг өөрчилдөг.

Операторууд засвар үйлчилгээний зорилгоор зориуд хаадаг холболтод түрэмгий дахин эхлэл нэмэх хэрэггүй, тэгэхгүй бол туннель цонхны дунд дахин гарч ирнэ. Эрэлтэд суурилсан загварт хадгалсан trap хангалттай, учир нь тохирох трафик child-ыг ямар ч таймергүйгээр дахин байгуулдаг.

Daemon-ы төлөвөөр биш, нэрээр шалгаарай

Peer доошоо байх үед холболт болон түүний child-ыг нэрээр уншаад, буцаж ирэхэд дахин уншаарай; тэдгээр хоёр гаралтын ялгаа нь нотолгоо юм.

swanctl --initiate --child private-lan
swanctl --terminate --ike branch

Дараа нь холбоо биш, үйлчилгээг батал. Шинэ child аюулгүй байдлын холбоо болон түүний ард байгаа хувийн очих газар руу амжилттай хүсэлт — эдгээр хоёр баримт чухал бөгөөд эрүүл холбоогүй туннельтэй ажиллаж буй daemon хоёуланг нь ч батлахгүй.

Хэрэв child хэзээ ч эхлэхгүй бол туршилтын трафик тохируулсан селекторуудтай яг нийцэж байгаа эсэхийг шалгаарай, протокол болон портыг оролцуулан. Хэрэв эхэлж бүтэлгүйтвэл төгсгөлгүй давталтын ард нуухын оронд таних эсвэл саналын алдааг уншаарай, учир нь keyingtries=0 байнгын татгалзлыг үүрд давтах болно.

Өөрчлөлтийг цонхонд ачаалж, дахин туршаарай

Reload нь daemon-ыг дахин ачаалахаас илүү аюулгүй бөгөөд тэгсэн ч үнэгүй биш: child-ыг солих эсвэл буулгах нь эхэлсэн холбоог хаах эсвэл түүний trap-ыг унагаж болно.

Засварын цонхны үеэр ачаалж, өмнөх файлыг хадгалж, холболт нь өгөгдмөл биш, таны зорьсон тохиргоотой гарч ирэхийг батал.

swanctl --load-conns
swanctl --list-conns

Өмнөх файлыг сэргээж дахин ачаалснаар буцааж, дараа нь мөнөөх хоёр командыг давтаарай. Зөвхөн daemon дахин ачаалсны дараа буцаж ирдэг туннель зассан биш, дахин тохируулсан байна.

Холбоотой нийтлэлүүд