RHEL7에서 방화벽으로 저장하여 실행하는 방법이 있습니까?


11

RHEL7을 사용하기 시작했고 systemd와 함께 제공되는 변경 사항에 대해 조금 배우고 있습니다.

/sbin/service iptables save방화벽 으로 수행 할 수있는 방법이 있습니까?

$ /sbin/service iptables save
The service command supports only basic LSB actions (start, stop, restart, try-restart, reload, force-reload, status). For other actions, please try to use systemctl.

설명서에서 찾을 수있는 가장 가까운 병렬은 --reload다음과 같습니다.

Reload the firewall without loosing state information:
$ firewall-cmd --reload

그러나 저장 여부를 명시 적으로 말하지 않습니다.

답변:


21

RHEL 7.0의 방화벽 버전에는 "저장"스크립트가 없으며 실행중인 방화벽 구성을 영구 구성으로 복사 할 수 없습니다. --permanent명령 행에 변경 사항 을 추가 하여 방화벽으로 방화벽 변경 사항을 저장 하십시오. 이를 사용하지 않으면 변경 한 내용은 일시적이며 시스템을 다시 시작할 때 유실됩니다.

예를 들면 다음과 같습니다.

firewall-cmd --add-service=http                 # Running config
firewall-cmd --add-service=http --permanent     # Startup config

방화벽의 이후 버전 (RHEL 7 이후)에는 실행중인 구성을 저장하는 방법이 포함되어 있으며 현재 Fedora 및 RHEL 7.1에서 사용할 수 있습니다 . 이 경우 명령은 다음과 같습니다.

firewall-cmd --runtime-to-permanent

2
Michael Hampton의 의견을 계속하기 위해 방화벽 규칙을 올바르게 저장하기 위해 "firewall-cmd --runtime-to-permanent"를 실행 한 후 방화벽 서비스 ( "systemctl restart firewalld")를 다시 시작해야한다는 것을 알았습니다. iptables를 통해 일부 규칙을 수동으로 제거해야합니다. 방화벽은 일부 규칙을 캐시하므로 "firewall-cmd --reload"는 "--runtime-to-permanent"명령을 통해 제거해야하는 규칙을 방화벽에서 다시 구성 할 수 있습니다.
Antony Nguyen

2
--runtime-to-permanent 명령은 탭 완성에 표시되지 않지만 실제로 Centcent 7.5 시스템에서 테스트되었습니다.
dodexahedron

@AntonyNguyen 방화벽이 규칙을 관리 할 때 iptables 명령을 사용해서는 안됩니다. FIrewalld는 변경 사항을 알 수있는 방법이 없습니다 (정기적으로 폴링해야하고 nftables로 수정 된 btw로 인해 방화벽 성능이 저하 될 수 있음). 'firewall-cmd --direct --passthrough ipv4 -A FORWARD ... -j DROP '
AdamKalisz

0

SIP 서비스와 일부 IP를 추가해야했습니다

/ usr / lib / firewalld / services / 디렉토리 에 다른 xml 서비스 파일을 기반으로 sip.xml을 추가했습니다 .

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SIP</short>
  <description>This is SIP, Yo! </description>
  <port protocol="udp" port="5060"/>
</service>

그런 다음 sip 서비스를 방화벽에 추가했습니다.

# firewall-cmd --add-service=sip --permanent 

그런 다음 /etc/firewalld/zones/public.xml에서 서비스에 IP를 추가했습니다.

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description></description>
  <service name="dhcpv6-client"/>
  <service name="http"/>
  <service name="ssh"/>
  <service name="https"/>

  <rule family="ipv4">
    <source address="x.x.x.x/32"/>
    <service name="sip"/>
    <accept/>
  </rule>

</zone>

로깅 수준을 추가하면 LOG를 추가 할 수도 있습니다

  <rule family="ipv4">
    <source address="x.x.x.x/32"/>
    <service name="sip" 
    <log prefix="sip" level="info"/>
    <accept/>
  </rule>

영역에 규칙을 추가 한 후 실행

# firewall-cmd --reload

iptables를 확인하십시오-모두 설정되어 있어야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.