Red Hat Training

A Red Hat training course is available for RHEL 8

41.8. nftables를 사용하여 포트 전달 구성

관리자는 포트 전달을 통해 특정 대상 포트로 전송된 패킷을 다른 로컬 또는 원격 포트로 전달할 수 있습니다.

예를 들어 웹 서버에 공용 IP 주소가 없는 경우 방화벽의 포트 80443 에서 들어오는 패킷을 웹 서버로 전달하는 방화벽에서 포트 전달 규칙을 설정할 수 있습니다. 이 방화벽 규칙을 사용하면 인터넷의 사용자가 방화벽의 IP 또는 호스트 이름을 사용하여 웹 서버에 액세스할 수 있습니다.

41.8.1. 들어오는 패킷이 다른 로컬 포트로 전달

nftables 를 사용하여 패킷을 전달할 수 있습니다. 예를 들어 8022 포트의 수신 IPv4 패킷을 로컬 시스템의 포트 22 로 전달할 수 있습니다.

절차

  1. ip address family를 사용하여 nat 라는 테이블을 만듭니다.

    # nft add table ip nat
  2. preroutingpostrouting 체인을 테이블에 추가합니다.

    # nft -- add chain ip nat prerouting { type nat hook prerouting priority -100 \; }
    참고

    nft 명령에 -- 옵션을 전달하여 쉘에서 음수 우선 순위 값을 nft 명령의 옵션으로 해석하지 못하도록 합니다.

  3. 포트 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 사용자로 로그인했습니다.

절차

  1. ip address family를 사용하여 nat 라는 테이블을 만듭니다.

    # nft add table ip nat
  2. preroutingpostrouting 체인을 테이블에 추가합니다.

    # 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 명령의 옵션으로 해석하지 못하도록 합니다.

  3. 포트 443 에서 들어오는 패킷을 192.0.2.1 의 동일한 포트로 리디렉션하는 사전 지정 체인에 규칙을 추가합니다.

    # nft add rule ip nat prerouting tcp dport 443 dnat to 192.0.2.1
  4. 행 체인에 규칙을 추가하여 발신 트래픽을 마스커레이드합니다.

    # nft add rule ip nat postrouting daddr 192.0.2.1 masquerade
  5. 패킷 전달 활성화:

    # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
    # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf