Với systemd-networkd, thực hiện hành động khi thay đổi cấu hình mạng


10

Tôi đang chuyển từ Debian ifupdownsang systemd-networkd, và nó hoạt động tốt. Một điều còn thiếu là mỗi khi thay đổi mạng, tôi muốn gọi killall -ARLM tinc, để VPN của tôi tăng lên kịp thời.

systemdhoặc systemd-networkdcung cấp chức năng như vậy? Làm thế nào tôi sẽ sử dụng nó?

Câu trả lời:


3

Tôi đang sử dụng networkd-dispatcherđể chạy các sự kiện sau khi thay đổi trạng thái giao diện:

Networkd-distatcher là một trình nền của bộ điều phối để thay đổi trạng thái kết nối systemd-networkd. Trình nền này tương tự như Trình quản lý mạng, nhưng bị hạn chế hơn nhiều trong các loại sự kiện mà nó hỗ trợ do tính chất hạn chế của systemd-networkd.

Liên kết với Gitlab


Điều này được bao gồm trong Debian 10 (Buster).
John Eikenberry

2

Tinc nên được cập nhật dưới dạng một đơn vị systemd thay vì gửi tín hiệu trực tiếp. Để đạt được điều này một nhu cầu để cấu hình các file đơn vị của họ được xích với thích hợp Require=, Before=After=dòng trong [Unit]phần. Cũng đảm bảo rằng bạn đặt chính xác WantedBy=cho các dịch vụ mạng. (ví dụ. WantedBy={ network.target, network-online.target, network-pre.target} thay vì multi-user.target)

Điều này cho phép một người thực hiện systemctl restart systemd-networkd.serviceđể khởi động lại mạng của bạn. Kết hợp điều này với systemd-resolvd, udev/ dbus(cộng với wpa_supplicant@nic.servicekhi có wifi) và mạng của một người chỉ hoạt động.

Hãy chắc chắn đọc các bài viết về việc chuyển sang phụ thuộc systemd-networkdđơn vị . Đây cũng là một cách để gửi tín hiệu đến các systemd.serviceđơn vị của bạn thông qua systemctl killlệnh như được ghi trong systemd cho hướng dẫn của người quản trị


Tôi không thực sự làm theo. Vì vậy, nếu tinc được chạy như một dịch vụ systemd, tôi có thể sử dụng systemctl killđể phát tín hiệu. Nhưng tôi không thấy cách kích hoạt thay đổi cấu hình mạng.
Joachim Breitner

Bạn sẽ không sử dụng hệ thống chỉ báo hiệu các mục tiêu và phụ thuộc mối quan hệ. Như vậy một lần giao diện mạng của bạn là nhận tín hiệu này (trong nội bộ để systemd) sự phụ thuộc khác trong network.targetsau đó network-online.targetkhởi đơn vị đó. Vì vậy, chỉ cần tinc.servicebao gồm Requires=systemd-networkd.serviceWantedBy=network-online.targetsau đó khi systemd-networkd khởi động sẽ hiển thị giao diện nic và tun, thiết lập địa chỉ IP và sau đó báo hiệu cho tinc để bắt đầu hoặc khởi động lại khi cần.
Dwight Spencer

Tôi cũng không thể tìm cách kích hoạt khởi động lại dịch vụ, bởi vì network-online.target không dừng khi ngắt kết nối (nên gửi báo cáo lỗi cho việc này thực sự ...). Tôi đã sử dụng tập lệnh /etc/NetworkManager/dispatcher.d/ có chứacase "$2" in up|connectivity-change) if /usr/bin/nm-online -qx; then systemctl reload autossh.service fi;; esac
eMPee584

1
Tôi thấy thật thú vị khi bạn liên kết đến một bài viết được viết bởi người mà bạn đang trả lời câu hỏi. :) Tất nhiên nó hữu ích cho những người đọc sau câu trả lời này, nhưng nó vẫn buồn cười.
tự đại diện

1

Điều này hiện không thể. Tuy nhiên, bạn chỉ có thể sử dụng systemd-networkd-wait-online.servicenhư một phụ thuộc vào khởi động để cấu hình lại tinc. Theo kinh nghiệm của tôi, tinc sẽ phản ứng nhanh với những thay đổi trong cấu hình mạng. Ít nhất trên linux nó có thể sử dụng rtnetlink để lắng nghe những thay đổi giao diện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.