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

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가 표준 범위를 채택하지 않은 이유는 무엇입니까?



답변

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 시스템이 가능합니다.


답변