Systemd-networkd ile, ağ yapılandırması değişikliği üzerine bir eylem gerçekleştirin


10

Ben Debian en geçiş yaşıyorum ifupdownetmek systemd-networkdve çoğunlukla cezası çalışır. Eksik olan bir şey, her ağ değişikliğinde, aramak istediğim killall -ARLM tinc, böylece VPN'imin zamanında yükseleceği.

Bu tür bir işlev sağlıyor mu systemdveya systemd-networkdsağlıyor mu ? Nasıl Kullanırım?

Yanıtlar:


3

networkd-dispatcherArayüz durumu değiştikten sonra olayları çalıştırmak için kullanıyorum :

Networkd-dispatcher, systemd-networkd bağlantı durumu değişiklikleri için bir dağıtıcı arka plan programıdır. Bu arka plan programı NetworkManager dağıtıcısına benzer, ancak systemd-networkd'nin sınırlı yapısı nedeniyle desteklediği olay türlerinde çok daha sınırlıdır.

Bağlantı Gitlab


Bu Debian 10'a (Buster) dahildir.
John Eikenberry

2

Tentür, doğrudan sinyal göndermek yerine bir systemd birimi olarak güncellenmelidir. Onların birim dosyalarını yapılandırmak için bu bir ihtiyaçları elde etmek için uygun olan zincirleme edilecek Require=, Before=ve After=çizgiler [Unit]bölümünde. Ayrıca WantedBy=ağ hizmetleri için doğru ayarları yaptığınızdan emin olun . (yani. WantedBy={ network.target, network-online.target, network-pre.target} yerine multi-user.target)

Bu, systemctl restart systemd-networkd.serviceağınızı yeniden başlatmak için bir kişinin yürütülmesini sağlar . Bu ile birlikte systemd-resolvd, udev/ dbus(artı wpa_supplicant@nic.servicene zaman wifi) ve kişinin ağ sadece çalışır.

Systemd-networkd ve birim bağımlılıklarına geçiş hakkındaki makaleleri mutlaka okuyun . Bu ayrıca , yöneticiler için sistemd'de belgelenen komut systemd.servicearacılığıyla ünitelerinize sinyal göndermenin bir yoludur.systemctl kill


Gerçekten takip etmiyorum. Eğer tentür bir systemd hizmeti olarak çalıştırılırsa systemctl kill, sinyali iletmek için kullanabilirim . Ancak bunu bir ağ yapılandırma değişikliğinde nasıl tetikleyeceğimi göremiyorum.
Joachim Breitner

Systemd'in yalnızca hedefleri ve ilişki bağımlılıklarını işaret etmesini kullanmazsınız. Böylece ağ arayüzünüz kalktığında (dahili olarak systemd'e) network.targeto zaman network-online.targeto birimi başlatmak için diğer bağımlılıklar sinyaller . bu yüzden sadece tinc.servicedahil et Requires=systemd-networkd.serviceve WantedBy=network-online.targetsonra systemd-networkd başladığında, nic ve tun arayüzünü getirecek, bir IP adresi oluşturacak ve daha sonra gerektiğinde başlatmak veya yeniden başlatmak için tentür sinyali verilecektir.
Dwight Spencer

Ben de bir hizmet yeniden başlatma tetiklemek için bir yol bulamadık, çünkü network-online.target bağlantı kesilmesi durmaz (aslında bunun için bir hata raporu dosya gerekir ...). Şunları içeren bir /etc/NetworkManager/dispatcher.d/ komut dosyasına başvurdumcase "$2" in up|connectivity-change) if /usr/bin/nm-online -qx; then systemctl reload autossh.service fi;; esac
eMPee584

1
Sorusunu cevapladığınız kişi tarafından yazılmış bir makaleye bağlantı verdiğinizi eğlenceli buluyorum . :) Elbette bu cevabın sonraki okuyucuları için yararlı, ama yine de komik.
Wildcard

1

Bu şu anda mümkün değil. Ancak, systemd-networkd-wait-online.servicetenteyi yeniden yapılandırmak için yalnızca önyüklemede bağımlılık olarak kullanabilirsiniz . Deneyimlerime göre tinc, ağ yapılandırmasındaki değişikliklere hızlı tepki verecektir. En azından linux'da arayüz değişikliklerini dinlemek için rtnetlink kullanabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.