Linux가 IANA Ephemeral 포트 범위를 사용하지 않는 이유는 무엇입니까?


30

Wikipedia에 따르면

IANA (Internet Assigned Numbers Authority)는 동적 또는 개인 포트에 대해 49152 ~ 65535 범위를 제안합니다. 많은 Linux 커널이 포트 범위 32768-61000을 사용합니다.

IANA의 제안 범위와 약간의 차이가 있지만 Windows Vista, Windows 7, Windows Server 2008, FreeBSD 4.6 이상 및 기타 많은 사람들 이이 범위에 동의했지만 Linux는 여전히 눈에.니다.

그래도 살펴보면 보라.

$ cat /proc/sys/net/ipv4/ip_local_port_range 
32768   61000

Linux가 표준 범위를 채택하지 않은 이유는 무엇입니까?

답변:


21

IANA가 최대 1023까지 포트를 할당 한 시간이있었습니다 . RFC1700을 참조하십시오 . 한 번에 이것은 표준이었습니다. 대부분의 경우 RFC 스트림에서 변경 사항을 찾을 때 문제가 없지만 포트를 1024에서 49152로 등록에서 할당으로 변경하는 문제에 대해서는 부족했습니다.

Linux 히스토리 측면에서 2007 년의 기본 ip_local_port_range에 대해 의문이 제기되었습니다. 당시에는 포트 번호가 높으면 문제가 발생하고 49152에서 시작하면 범위가 거의 남지 않을 것이라는 우려로 언급 한 Linux 범위를 사용하기로 결정했습니다. 풀의 포트 번호 이것 과 그 스레드를 참조하십시오 . 당시 표현 된 생각은 32768에서 시작하여 IANA의 절차의 정신에 완전히 부합하지는 않았다는 것입니다. 이것을 읽으면서 개발자는 대부분의 과제가 범위의 하단에서 발생하고 위로 올라갈 것이라고 가정했습니다. 이 글에서 나는 32768과 49152 사이에 할당 된 100 개 이상의 포트 번호 (다른 프로토콜을 따로 따로 계산하지 않음)를 계산하여 지난 5 년간 꽤 잘 유지해 왔습니다.

왜 그 범위가 너무 작게 여겨졌는지 모르겠지만 두 가지 이유를 상상할 수 있습니다.

  1. 포트 번호는 무작위로 특정 공격을 막습니다. 풀에 주소가 많을수록이 방어 기능이 더 잘 작동합니다.
  2. 활동이 많은 서버는 포트 번호 소진에 문제가있을 수 있습니다. 포트가 일시적 일 수는 있지만 포트가 즉시 사용되는 것은 아닙니다. 특히 소켓은 TCP 종료 후 몇 분 동안 지속될 수 있습니다.

블로그 게시물은 2 번을 다루고 있으며 Linux 시스템이 다른 로컬 포트 ​​범위를 사용하기를 원하는 경우의 답변을 제안합니다. (/etc/sysctl.d를 사용하여 원하는 범위를 정의하십시오. 특정 충돌이 발생할 경우 사용할 수있는 ip_local_reserved_ports 항목도 있습니다. 인용 한 / proc / sys 항목과 일치합니다.)

요약해서 말하자면. Linux 기본값 은 현재 IANA 사양과 일치하지 않지만 소유자가 원하는 경우 특정 Linux 시스템이 가능합니다.


1
따르면 RFC 6056 , "로는 2.1 절에서 설명한 동적 포트 범위 49152-65535로 구성된다. 그러나, 임시 포트 선택 알고리즘은 전체 범위 1024-65535을 사용한다." - ip_local_port_range어쨌든 사용해서는 안되는 것 같습니다.
Evan Carroll 2016 년


@evan RFC 6056"로컬 호스트에서 특정 서비스를 제공하기 위해 필요할 수있는 포트 번호는 임시 포트 랜덤 화에 사용할 수있는 포트 번호 풀에 포함되어서는 안된다""관리자는 로컬 호스트에 의해 제공되며 해당 등록 포트만 제외해야합니다. " 그러나 OS가 일반적으로 제공하는 것은 아닙니다. 실질적인 배제 메커니즘은 하한을 높이는 것입니다.
jmb
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.