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가 표준 범위를 채택하지 않은 이유는 무엇입니까?
답변1
IANA가 최대 1023개의 포트만 할당하던 시절이 있었습니다. 보다RFC1700. 한때는 이것이 표준이었습니다. 대부분의 경우 RFC 스트림에서 상황이 변경되는 것을 발견하는 데 문제가 없지만 등록에서 할당까지 포트를 1024에서 49152로 변경하는 데 문제가 있습니다.
Linux의 역사에 따르면 2007년에 누군가가 기본 ip_local_port_range에 대해 질문했습니다. 고급 포트 번호가 문제를 일으킬 수 있다는 우려와 49152로 시작하는 범위는 포트 번호가 너무 적게 남을 수 있다는 우려 때문에 말씀하신 Linux 범위를 사용하기로 결정했습니다. 풀의 포트 번호입니다. 바라보다이것그리고 그 스레드. 당시 표현된 아이디어는 32768로 시작하는 것이 IANA 절차의 정신과 완전히 일치하지는 않더라도 일관성이 있다는 것입니다. 이 기사를 읽으면서 나는 개발자들이 대부분의 할당이 범위의 맨 아래에서 시작하여 위로 올라갈 것이라고 가정했다는 것을 추론했습니다. 이 글을 쓰는 시점에서 32768에서 49152 사이에 할당된 포트 번호가 100개가 조금 넘는 것으로 나타났습니다(개별적인 프로토콜은 포함하지 않음). 따라서 상황은 지난 5년 동안 꽤 잘 유지되었습니다.
범위가 너무 작은 것으로 간주되는 이유는 모르겠지만 두 가지 이유를 상상할 수 있습니다.
- 포트 번호는 특정 공격을 방지하기 위해 무작위로 지정됩니다. 풀에 주소가 많을수록 이 방어 효과가 더 좋아집니다.
- 활동량이 많은 서버에서는 포트 번호가 고갈될 수 있습니다. 포트는 일시적일 수 있지만 즉시 사용되는 것은 아닙니다. 특히 소켓은 TCP가 닫힌 후에도 몇 분 동안 지속될 수 있습니다.
이것블로그 게시물에서는 두 번째 요점을 다루고 Linux 시스템이 다양한 범위의 로컬 포트를 사용하도록 하려는 경우에 대한 답변을 제안합니다. (/etc/sysctl.d를 사용하여 원하는 범위를 정의하십시오. 특정 충돌이 발생할 경우 유용할 수 있는 ip_local_reserved_ports 항목도 있습니다. 이 항목은 참조하는 /proc/sys 항목과 일치합니다.)
그래도. 리눅스기본값현재 IANA 사양과 호환되지 않지만 소유자가 원하는 경우 특정 Linux 시스템은 괜찮습니다.