Tôi đang cố gắng gọi iptables-restore trong tập lệnh systemd.service. Tôi có một số quy tắc yêu cầu tra cứu DNS. Tôi đã bao gồm After = bind9.service trong phần Đơn vị cho tường lửa. Tuy nhiên, systemd nghĩ rằng bind9 được bắt đầu khi nó rẽ nhánh chứ không phải khi được đặt tên sẵn sàng phục vụ các yêu cầu. Nó khởi động iptables-restore trước khi có thể giải quyết tên máy chủ và do đó không thành công. Đây là phần thích hợp của syslog:
Ngày 13 tháng 12 21:29:02 fw systemd [1]: Bắt đầu BIND Máy chủ tên miền. Ngày 13 tháng 12 21:29:02 fw systemd [1]: Đạt mục tiêu Tra cứu tên máy chủ và mạng. Ngày 13 tháng 12 21:29:02 fw systemd [1]: Bắt đầu tải quy tắc iptables ... Ngày 13 tháng 12 21:29:02 fw systemd [1]: Bắt đầu cầu Homebridge HomeKit. Ngày 13 tháng 12 21:29:02 fw systemd [1]: Bắt đầu máy chủ OpenBSD Secure Shell ... Ngày 13 tháng 12 21:29:02 fw sh [1841]: iptables-restore v1.6.0: không tìm thấy máy chủ / mạng `example.com ' Ngày 13 tháng 12 21:29:02 fw sh [1841]: Xảy ra lỗi tại dòng: 24 Ngày 13 tháng 12 21:29:02 fw sh [1841]: Hãy thử `iptables-restore -h 'hoặc' iptables-restore --help 'để biết thêm thông tin. Ngày 13 tháng 12 21:29:02 fw có tên [1838]: bắt đầu BIND 9.10.3-P4-Ubuntu <id: ebd72b3> -f -4 -u bind
Đây là tập tin dịch vụ:
[Đơn vị] Mô tả = Tải quy tắc iptables Sau = bind9.service [Tải về] WantedBy = multi-user.target WantedBy = network-online.target [Dịch vụ] Loại = oneshot RemainAfterExit = có ExecStart = / bin / sh -c "/ sbin / iptables-restore </etc/iptables.up.rules"
Cách tốt nhất để lệnh iptables-restore thực thi khi khởi động, nhưng đợi tên được kích hoạt là gì?