시스템 서비스 iptables-restore가 활성화되었지만 시작 후 시작되지 않습니다

시스템 서비스 iptables-restore가 활성화되었지만 시작 후 시작되지 않습니다

나는 Gentoo 시스템(기본 시스템 버전 2.2)을 가지고 있고 부팅 시 iptables 규칙을 자동으로 로드하고 싶습니다.

iptables-restore그래서 시작 시 systemd 서비스를 실행하려고 했습니다 .

파일은 /usr/lib/systemd/system/iptables-restore.service다음과 같습니다:

[Unit]
Description=Restore iptables firewall rules
# if both are queued for some reason, don't store before restoring :)
Before=iptables-store.service
# sounds reasonable to have firewall up before any of the services go up
Before=network.target
Conflicts=shutdown.target

[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore /var/lib/iptables/rules-save

[Install]
WantedBy=basic.target

그럼 내가 할게

systemctl daemon-reload
systemctl enable iptables-restore.service
systemctl start iptables-restore
systemctl status iptables-restore

서비스가 시작된 후 iptables 규칙이 성공적으로 적용되었으며 다음 명령으로 확인할 수 있습니다.iptables -L

그러나 상태는 다음과 같습니다.

● iptables-restore.service - Restore iptables firewall rules
   Loaded: loaded (/usr/lib/systemd/system/iptables-restore.service; enabled)
   Active: inactive (dead)

다시 시작한 후에도 규칙이 적용되지 않습니다.

또한 동일한 콘텐츠로 다른 시스템 서비스를 만들었지만 다음 WantedBy=basic.target으로 변경했습니다.WantedBy=multi-user.target

그런데 그것도 안 먹힌다...

부팅 시 systemd 서비스를 실행하는 방법에 대한 팁이나 부팅 시 iptables 규칙을 적용하는 방법에 대한 대안이 있습니까?

답변1

ExecStart=/sbin/iptables-restore /var/lib/iptables/rules-save

iptables-restore파일 이름을 명령줄 인수로 전달하지 마십시오. 이 사람에 따르면(강조):

iptables-restore는 지정된 데이터에서 IP 테이블을 복원하는 데 사용됩니다.표준 입력. 파일을 읽으려면 쉘에서 제공하는 I/O 리디렉션을 사용하십시오.

리디렉션을 통해 파일을 전달해야 합니다.

ExecStart='/sbin/iptables-restore < /var/lib/iptables/rules-save'

관련 정보