41.8. nftables를 사용하여 포트 전달 구성
관리자는 포트 전달을 통해 특정 대상 포트로 전송된 패킷을 다른 로컬 또는 원격 포트로 전달할 수 있습니다.
예를 들어 웹 서버에 공용 IP 주소가 없는 경우 방화벽의 포트 80
및 443
에서 들어오는 패킷을 웹 서버로 전달하는 방화벽에서 포트 전달 규칙을 설정할 수 있습니다. 이 방화벽 규칙을 사용하면 인터넷의 사용자가 방화벽의 IP 또는 호스트 이름을 사용하여 웹 서버에 액세스할 수 있습니다.
41.8.1. 들어오는 패킷이 다른 로컬 포트로 전달
nftables
를 사용하여 패킷을 전달할 수 있습니다. 예를 들어 8022
포트의 수신 IPv4 패킷을 로컬 시스템의 포트 22
로 전달할 수 있습니다.
절차
ip
address family를 사용하여nat
라는 테이블을 만듭니다.# nft add table ip nat
prerouting
및postrouting
체인을 테이블에 추가합니다.# nft -- add chain ip nat prerouting { type nat hook prerouting priority -100 \; }
참고nft
명령에--
옵션을 전달하여 쉘에서 음수 우선 순위 값을nft
명령의 옵션으로 해석하지 못하도록 합니다.포트
8022
에서 들어오는 패킷을 로컬 포트22
로 리디렉션하는준비
체인에 규칙을 추가합니다.# nft add rule ip nat prerouting tcp dport 8022 redirect to :22
41.8.2. 특정 로컬 포트에서 들어오는 패킷을 다른 호스트로 전달
대상 네트워크 주소 변환(DNAT) 규칙을 사용하여 로컬 포트에서 들어오는 패킷을 원격 호스트로 전달할 수 있습니다. 이를 통해 인터넷의 사용자는 개인 IP 주소가 있는 호스트에서 실행되는 서비스에 액세스할 수 있습니다.
예를 들어 로컬 포트 443
에서 들어오는 IPv4 패킷을 192.0.2.1
IP 주소를 사용하여 원격 시스템의 동일한 포트 번호로 전달할 수 있습니다.
사전 요구 사항
-
패킷을 전달해야 하는 시스템에서
root
사용자로 로그인했습니다.
절차
ip
address family를 사용하여nat
라는 테이블을 만듭니다.# nft add table ip nat
prerouting
및postrouting
체인을 테이블에 추가합니다.# nft -- add chain ip nat prerouting { type nat hook prerouting priority -100 \; } # nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
참고nft
명령에--
옵션을 전달하여 쉘에서 음수 우선 순위 값을nft
명령의 옵션으로 해석하지 못하도록 합니다.포트
443
에서 들어오는 패킷을192.0.2.1
의 동일한 포트로 리디렉션하는사전
지정 체인에 규칙을 추가합니다.# nft add rule ip nat prerouting tcp dport 443 dnat to 192.0.2.1
후
행 체인에 규칙을 추가하여 발신 트래픽을 마스커레이드합니다.# nft add rule ip nat postrouting daddr 192.0.2.1 masquerade
패킷 전달 활성화:
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf