7.11. firewalld를 사용하여 NAT 구성
firewalld
를 사용하면 다음 NAT(네트워크 주소 변환) 유형을 구성할 수 있습니다.
- 마스커레이딩
- 대상 NAT(DNAT)
- 리디렉션
7.11.1. 네트워크 주소 변환 유형
다음은 다양한 NAT(네트워크 주소 변환) 유형입니다.
- 마스커레이딩
이러한 NAT 유형 중 하나를 사용하여 패킷의 소스 IP 주소를 변경합니다. 예를 들어, 인터넷 서비스 공급자(ISP)는
10.0.0.0/8
과 같은 개인 IP 범위를 라우팅하지 않습니다. 네트워크에서 개인 IP 범위를 사용하고 사용자가 인터넷의 서버에 연결할 수 있어야 하는 경우 이러한 범위의 패킷의 소스 IP 주소를 공용 IP 주소에 매핑합니다.마스커레이딩은 나가는 인터페이스의 IP 주소를 자동으로 사용합니다. 따라서 나가는 인터페이스에서 동적 IP 주소를 사용하는 경우 마스커레이딩을 사용합니다.
- 대상 NAT(DNAT)
- 이 NAT 유형을 사용하여 들어오는 패킷의 대상 주소와 포트를 다시 작성합니다. 예를 들어 웹 서버가 개인 IP 범위의 IP 주소를 사용하므로 인터넷에서 직접 액세스할 수 없는 경우 라우터에 DNAT 규칙을 설정하여 수신 트래픽을 이 서버로 리디렉션할 수 있습니다.
- 리디렉션
- 이 유형은 패킷을 로컬 시스템의 다른 포트로 리디렉션하는 특수한 DNAT의 경우입니다. 예를 들어 서비스가 표준 포트와 다른 포트에서 실행되는 경우 표준 포트에서 들어오는 트래픽을 이 특정 포트로 리디렉션할 수 있습니다.
7.11.2. IP 주소 마스커레이딩 구성
시스템에서 IP 마스커레이딩을 활성화할 수 있습니다. IP 마스커레이딩은 인터넷에 액세스할 때 게이트웨이 뒤에 있는 개별 머신을 숨깁니다.
절차
IP 마스커레이드가 활성화되어 있는지 확인하려면 (예:
외부
영역의 경우) 다음 명령을root
로 입력합니다.# firewall-cmd --zone=external --query-masquerade
이 명령은 활성화된 경우 종료 상태
0
으로yes
를 출력합니다. 그렇지 않으면 종료 상태1
로no
를 출력합니다.zone
이 생략되면 기본 영역이 사용됩니다.IP 마스커레이딩을 사용하려면
root
로 다음 명령을 입력합니다.# firewall-cmd --zone=external --add-masquerade
-
이 설정을 영구적으로 설정하려면 명령에
--permanent
옵션을 전달합니다. IP 마스커레이딩을 비활성화하려면
root
로 다음 명령을 입력합니다.# firewall-cmd --zone=external --remove-masquerade
이 설정을 영구적으로 만들려면
--permanent
옵션을 명령에 전달합니다.
7.11.3. DNAT를 사용하여 들어오는 HTTP 트래픽 전달
대상 네트워크 주소 변환(DNAT)을 사용하여 들어오는 트래픽을 하나의 대상 주소 및 포트에서 다른 대상 주소로 보낼 수 있습니다. 일반적으로 외부 네트워크 인터페이스에서 특정 내부 서버 또는 서비스로 들어오는 요청을 리디렉션하는 데 유용합니다.
사전 요구 사항
-
firewalld
서비스가 실행 중입니다.
절차
다음 콘텐츠를 사용하여
/etc/sysctl.d/90-enable-IP-forwarding.conf
파일을 생성합니다.net.ipv4.ip_forward=1
이 설정은 커널에서 IP 전달을 활성화합니다. 내부 RHEL 서버가 라우터 역할을 하고 네트워크에서 네트워크로 패킷을 전달합니다.
/etc/sysctl.d/90-enable-IP-forwarding.conf
파일에서 설정을 로드합니다.# sysctl -p /etc/sysctl.d/90-enable-IP-forwarding.conf
들어오는 HTTP 트래픽을 전달합니다.
# firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toaddr=198.51.100.10:toport=8080 --permanent
이전 명령은 다음 설정으로 DNAT 규칙을 정의합니다.
-
--zone=public
- DNAT 규칙을 구성하는 방화벽 영역입니다. 필요한 모든 영역에 맞게 조정할 수 있습니다. -
--add-forward-port
- 포트 전달 규칙을 추가 중임을 나타내는 옵션입니다. -
port=80
- 외부 대상 포트입니다. -
proto=tcp
- TCP 트래픽을 전달함을 나타내는 프로토콜입니다. -
toaddr=198.51.100.10
- 대상 IP 주소입니다. -
toport=8080
- 내부 서버의 대상 포트입니다. -
--permanent
- 재부팅 시 DNAT 규칙을 유지할 수 있는 옵션입니다.
-
방화벽 구성을 다시 로드하여 변경 사항을 적용합니다.
# firewall-cmd --reload
검증
사용한 방화벽 영역에 대한 DNAT 규칙을 확인합니다.
# firewall-cmd --list-forward-ports --zone=public port=80:proto=tcp:toport=8080:toaddr=198.51.100.10
또는 해당 XML 구성 파일을 확인합니다.
# cat /etc/firewalld/zones/public.xml <?xml version="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <service name="ssh"/> <service name="dhcpv6-client"/> <service name="cockpit"/> <forward-port port="80" protocol="tcp" to-port="8080" to-addr="198.51.100.10"/> <forward/> </zone>
추가 리소스
- 런타임에 커널 매개변수 구성
-
firewall-cmd(1)
매뉴얼 페이지
7.11.4. 비표준 포트에서 트래픽을 리디렉션하여 표준 포트에서 웹 서비스에 액세스하도록 설정
리디렉션 메커니즘을 사용하여 사용자가 URL에 포트를 지정할 필요 없이 내부적으로 비표준 포트에서 실행되는 웹 서비스를 만들 수 있습니다. 결과적으로 URL은 더 간단하며 더 나은 검색 환경을 제공하는 반면 비표준 포트는 여전히 내부적으로 또는 특정 요구 사항에 사용됩니다.
사전 요구 사항
-
firewalld
서비스가 실행 중입니다.
절차
다음 콘텐츠를 사용하여
/etc/sysctl.d/90-enable-IP-forwarding.conf
파일을 생성합니다.net.ipv4.ip_forward=1
이 설정은 커널에서 IP 전달을 활성화합니다.
/etc/sysctl.d/90-enable-IP-forwarding.conf
파일에서 설정을 로드합니다.# sysctl -p /etc/sysctl.d/90-enable-IP-forwarding.conf
NAT 리디렉션 규칙을 생성합니다.
# firewall-cmd --zone=public --add-forward-port=port=<standard_port>:proto=tcp:toport=<non_standard_port> --permanent
이전 명령은 다음 설정으로 NAT 리디렉션 규칙을 정의합니다.
-
--zone=public
- 규칙을 구성하는 방화벽 영역입니다. 필요한 모든 영역에 맞게 조정할 수 있습니다. -
--add-forward-port=port= <non_standard_port
> - 들어오는 트래픽을 처음 수신하는 소스 포트를 사용하여 포트 전달(리렉션) 규칙을 추가 중임을 나타내는 옵션입니다. -
proto=tcp
- TCP 트래픽을 리디렉션함을 나타내는 프로토콜입니다. -
toport=<standard_port
> - 소스 포트에서 수신한 후 들어오는 트래픽을 리디렉션해야 하는 대상 포트입니다. -
--permanent
- 다시 부팅 시 규칙을 유지할 수 있는 옵션입니다.
-
방화벽 구성을 다시 로드하여 변경 사항을 적용합니다.
# firewall-cmd --reload
검증
다음을 사용한 방화벽 영역의 리디렉션 규칙을 확인합니다.
# firewall-cmd --list-forward-ports port=8080:proto=tcp:toport=80:toaddr=
또는 해당 XML 구성 파일을 확인합니다.
# cat /etc/firewalld/zones/public.xml <?xml version="1.0" encoding="utf-8"?> <zone> <short>Public</short> <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description> <service name="ssh"/> <service name="dhcpv6-client"/> <service name="cockpit"/> <forward-port port="8080" protocol="tcp" to-port="80"/> <forward/> </zone>
추가 리소스
- 런타임에 커널 매개변수 구성
-
firewall-cmd(1)
매뉴얼 페이지