NAT 포트 고갈은 어떻게 처리됩니까?

NAT 포트 고갈은 어떻게 처리됩니까?

"포트 주소 변환(PAT)은 여러 호스트가 동일한 소스 포트 번호를 사용하여 동시에 서로 다른 외부 연결을 설정할 때 발생하는 충돌을 해결합니다. 그런 다음 PAT는 연결에 포트 번호를 할당할 수 있습니다.사용 가능한 포트 풀, 소스 포트 필드에 이 포트 번호를 삽입합니다."

https://en.wikipedia.org/wiki/Network_address_translation

수천 개의 요청을 수용하는 확장성이 뛰어난 서버가 10대 있다면 어떨까요? 포트 소모는 우리가 쉽게 도달할 수 있는 매우 기본적인 한계(64k)로 보입니다.

업계에서는 이러한 시나리오를 어떻게 처리합니까?

답변1

결국 NAT는 어떤 연결이 어디로 가는지에 대한 매핑을 포함하는 NAT 장치의 조회 테이블로 요약됩니다. 그러나 이러한 테이블 항목은세션별기초.

전. 다음에 호스트가 있으면10.10.10.10, 에서 인터넷상의 서버와 통신하려고 합니다.8.8.8.8, 공개 IP가 다음과 같은 내 인터넷 게이트웨이를 통해1.1.1.1, 해당 통신이 발생하면 내 인터넷 게이트웨이는 다음과 같은 항목 쌍을 생성할 수 있습니다.

원천 스포츠 목적지 D포트 행위
10.10.10.10 20000 8.8.8.8 80 SNAT 10.10.10.10:20000 --> 1.1.1.1:40000
8.8.8.8 80 1.1.1.1 40000 DNAT 1.1.1.1:40000 --> 10.10.10.10:20000

그렇게 보일 수도 있지만1.1.1.1:40000이제 이 세션을 위해 사용 중이며 ~63999개의 포트를 남겨두고 있습니다. 이는 정확히 사실이 아닙니다. 이러한 항목은 세션별로 작성되므로 후속 통신이 발생하고 다음과 같이 테이블을 구성하는 것이 완벽하게 합리적입니다.

원천 스포츠 목적지 D포트 행위
10.10.10.10 20000 8.8.8.8 80 SNAT 10.10.10.10:20000 --> 1.1.1.1:40000
8.8.8.8 80 1.1.1.1 40000 DNAT 1.1.1.1:40000 --> 10.10.10.10:20000
10.10.10.10 20001 8.8.8.8 81 SNAT 10.10.10.10:20001 --> 1.1.1.1:40000
8.8.8.8 81 1.1.1.1 40000 DNAT 1.1.1.1:40000 --> 10.10.10.10:20001
10.10.10.10 20002 8.8.4.4 80 SNAT 10.10.10.10:20002 --> 1.1.1.1:40000
8.8.4.4 80 1.1.1.1 40000 DNAT 1.1.1.1:40000 --> 10.10.10.10:20002
10.10.10.10 20003 8.8.4.4 81 SNAT 10.10.10.10:20003 --> 1.1.1.1:40000
8.8.4.4 81 1.1.1.1 40000 DNAT 1.1.1.1:40000 --> 10.10.10.10:20003

따라서 공개 인터페이스(일반적으로 NAT 소진이 우려되는 곳)에는 사실상 4개의 세션이 있음을 알 수 있습니다.

1.1.1.1:40000 --> 8.8.8.8:80
1.1.1.1:40000 --> 8.8.8.8:81
1.1.1.1:40000 --> 8.8.4.4:80
1.1.1.1:40000 --> 8.8.4.4:81

그러나 이 4개 세션은 4개 포트를 완전히 사용하지 않으며 NAT 장치는 이 4개 세션에 속한 트래픽이 라우팅되어야 하는 위치를 정확히 알고 있습니다.

따라서 64k 포트 제한이 있는 것처럼 보일 수 있지만 실제로는 대상 소켓당 64k에 가깝습니다(몇 가지 주의 사항 있음). 무한하지는 않지만 확실히 플랫 64k보다 확장성이 뛰어납니다.

관련 정보