Hizmeti durdurmak, persist-tun ayarlı olsa bile arayüzü kaldırır. Bu, seçeneğin belgelendiği gibi çalışmasıdır, bir arıza değil. Seçenek, çalışan bir süreç içindeki tek bir yeniden başlatma yolunu tanımlar ve systemctl stop o yol değildir.

İki adı birlikte okuyun, tasarım netleşir. Biri bir tanımlayıcı tutar, diğeri anahtar malzemesini tutar ve ikisi de ayrıcalıklar bırakıldıktan sonra olanlar yüzünden vardır.

İki kaynak ve ait oldukları yeniden başlatma

OpenVPN kendi yeniden başlatmasını iki olağan durumda bildirir. Açık bir SIGUSR1 bunu yapar ve ölü bir eşin tetiklediği ping-restart de aynısını yapar. İkisi de süreci canlı bırakır ve bağlantı kurulumunu yeniden çalıştırır, seçenekler asıl orada yerlerini kazanır.

EventTUN/TAP deviceKey and auth filesAddresses and routesup/down hooks
Soft reset, from SIGUSR1 or from a ping-restart the daemon sends itselfsurvives only with persist-tunsurvive only with persist-keysurvive with the device, otherwise rebuiltrun again only when restart hooks are enabled
Configuration reload, SIGHUPrecreatedre-read from diskrebuilt once the device returnsrun again
Service stoplostre-read at the next startremovedrun at the next start

Bu iki seçeneğin değiştirdiği tek şey yumuşak yeniden başlatma satırıdır ve atladıkları iş yoğun bir bağlantıda pahalı kısımdır. Bir aygıtı yeniden açmak ona bağlı adresleri ve yolları yıkar ve bunları yeniden kurmak, yeniden başlatma başladığında yolda olan paketleri düşürebilir. Durdurma aynı nesneleri onları koruyacak hiçbir seçenek olmadan yok eder.

Bu seçenekler neden var

Sertleştirilmiş bir OpenVPN sunucusu genellikle root olarak başlar, anahtarlarını ve aygıtını açar, sonra ayrıcalıksız bir kullanıcıya iner. Bu inişten sonra bazı işlemler basitçe yok olur. 0600 kipindeki bir anahtar dosyasını okumak, bir ağ arayüzü oluşturmak veya yolları değiştirmek reddedilebilir.

persist seçenekleri olmadan, ping-restart tetiklemek için yeterince uzun süre sessiz kalan bir eş tam da bu işlemleri zorlardı. Yapılandırmada hiçbir şey değişmemiş olsa bile yeniden bağlanma başarısız olurdu. Süreç sebepsiz ölüyormuş gibi görünürdü ve günlük ağ hatası yerine izin hatası gösterirdi.

Onlarla, yumuşak yeniden başlatma ayrıcalıklı aşamanın zaten elde ettiğini yeniden kullanır. Sihir yoktur ve süreç hiçbir şeyi atlatmaz. Kaynak edinimi yalnızca ertelenir.

Sonuncuyu değil, ilk hatayı okuyun

Yeniden başlatma başarısız olduğunda, sonuncu yerine ilk hatayı okuyun. Korumalı bir anahtar, bir auth dosyası, bir arayüz ioctl'i ve bir dış kanca dört farklı kaynaktır. Birini tutmak diğerlerine erişim hakkında hiçbir şey söylemez. Bir güvenlik duvarı aracını çağıran kanca hâlâ o aracın talep ettiği ayrıcalıklara ihtiyaç duyar.

Kancaların kendi anahtarı vardır. OpenVPN kılavuzu persist seçeneklerini up-restart ile eşleştirir, bu da yeniden başlatmadan sonra up ve down betiklerinin yeniden çalışıp çalışmayacağına karar verir. Bu nedenle ayakta kalan bir arayüz, çözümleyici entegrasyonunuzun yenilenip yenilenmediği hakkında size hiçbir şey söylemez.

# 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

Bu komut çifti iki arıza kipini saniyeler içinde ayırır. Var olan ama yolları eksik bir arayüz kanca veya yol sorunudur. Kaybolan bir arayüz sürecin gerçekten sona erdiği anlamına gelir.

Korunan arayüz bir kill switch değildir

Gereksinim trafiğin tünelin dışına hiç çıkmamasıysa, korunan bir aygıt bunu sağlamaz. Diğer adres ailesi için yollar, ikinci varsayılan yol ve sürecin tamamen çıktığı durum seçeneğin kapsamı dışında kalır.

İki gereksinimi ayrı ayrı ele alın. Tünel nesnesini yeniden bağlanmalar arasında tutmak daemon için bir kolaylıktır. Tünel çökmüşken çıkışı engellemek kendi kuralları ve kendi testi olan bir güvenlik duvarı politikasıdır. İkisini karıştırmak, savunmacı görünen ve en iyi çaba yeniden bağlanma gibi davranan bir yapılandırma üretir.

Teşhis etmeden önce olayı adlandırın. Yumuşak yeniden başlatma, başarısız bir bağlantı denemesi ve hizmet durdurma üç davranışa sahip üç olaydır ve yalnızca birincisi bu seçeneklerin tanımladığı şeydir.

İlgili makaleler