65,535 개 이상의 포트를 제공하도록 Linux 시스템을 설정할 수 있습니까? 의도는 주어진 시스템에서 65k 이상의 데몬을 수신하는 것입니다.
분명히 사용되는 포트가 있으므로 이러한 이유로 인해 불가능한 것이므로 TCP가 이와 같은 작업을 제한하는 위치를 이해하려는 이론적 인 연습으로 생각하십시오.
65,535 개 이상의 포트를 제공하도록 Linux 시스템을 설정할 수 있습니까? 의도는 주어진 시스템에서 65k 이상의 데몬을 수신하는 것입니다.
분명히 사용되는 포트가 있으므로 이러한 이유로 인해 불가능한 것이므로 TCP가 이와 같은 작업을 제한하는 위치를 이해하려는 이론적 인 연습으로 생각하십시오.
답변:
TCP 용 RFC : RFC 793-Transmission Control Protocol 을 보면 TCP 헤더가 소스 / 대상 포트 필드에 대해 16 비트로 제한되어 있기 때문에 대답이 없을 것 같습니다.
IPv6이 32 비트 대 128 비트보다 훨씬 더 큰 IP 주소 공간을 제공하더라도 포트 번호에 대해 16 비트의 TCP 패킷 제한을 개선하려고 시도하지는 않습니다. 흥미롭게도 IPv6을위한 RFC : IPv6 ( Internet Protocol, Version 6) Specification , IP 필드를 확장해야했습니다.
TCP가 IPv6에서 실행될 때 RFC 2460에 따라 체크섬을 계산하는 데 사용되는 방법이 변경됩니다 .
체크섬 계산에 IP 헤더의 주소를 포함하는 모든 전송 또는 기타 상위 계층 프로토콜은 32 비트 IPv4 주소 대신 128 비트 IPv6 주소를 포함하도록 IPv6을 통해 사용하도록 수정해야합니다.
한 가지 방법은 더 많은 인터페이스를 사용하여 추가 IP 주소를 쌓는 것입니다. 시스템에 여러 개의 NIC가있는 경우이 방법이 더 쉽지만 단일 NIC로도 가상 인터페이스 ( 별칭 )를 사용하여 필요한 경우 더 많은 IP를 할당 할 수 있습니다.
참고 : 대신 별칭을 iproute2
사용하여 단일 인터페이스 (예 :)에 IP 주소를 쌓을 수 있습니다 eth0
.
$ sudo ip link set eth0 up
$ sudo ip addr add 192.0.2.1/24 dev eth0
$ sudo ip addr add 192.0.2.2/24 dev eth0
$ ip addr show dev eth0
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc
pfifo_fast state DOWN qlen 1000
link/ether 00:d0:b7:2d:ce:cf brd ff:ff:ff:ff:ff:ff
inet 192.0.2.1/24 brd 192.0.2.255 scope global eth1
inet 192.0.2.2/24 scope global secondary eth1
출처 : iproute2 : ifconfig 이후의 수명
65,535 개 이상의 포트를 제공하도록 Linux 시스템을 설정할 수 있습니까?
아니.
의도는 주어진 시스템에서 65k 이상의 데몬을 수신하는 것입니다.
그런 다음이 필요합니다.
iptables
트래픽 콘텐츠를 리디렉션 하는 구성 또는
"서비스 브로커 서비스"또는 "멀티플렉서 서비스"는 단일 포트에서 들어오는 연결을 수락하고 "이 뒤에있는"적절한 데몬으로 라우팅합니다. 표준 프로토콜이 수정되지 않은 상태로 전달되도록하려면이 멀티플렉서 서비스에서 IDS 또는 계층 7 방화벽이 분석되는 방식으로 프로토콜 스니핑 / 인식을 구현해야합니다. 대부분의 프로토콜로 완전히 가능합니다.
두 번째 항목 당, 원하는 경우 2 ^ 16 개 이상의 "포트"를 처리하도록이 서비스를 설계 할 수 있습니다. 2 ^ 16 + 리스너의로드에 비해 성능에 미치는 영향이 최소화 될 것이라고 확신합니다.
Linux의 데몬은 파일 시스템에있는 유닉스 소켓에서 수신 대기 할 수 있으므로 "멀티플렉서 서비스"는 외부 포트 <-> 내부 유닉스 소켓의 내부 매핑을 유지할 수 있습니다. 최신 파일 시스템에서 inode가 부족해지기 전에 커널 프로세스 제한 (32Kbyte 프로세스?)에 빠질 수 있습니다.
좋은 대답이 없기 때문에 차임하고 싶었습니다.
이를위한 한 가지 방법은 포트 확장을 지정하는 IP 옵션을 추가하는 것입니다. 이 옵션은 IP 헤더의 선택적 부분에 맞도록 설계되어야하며 알 수없는 홉으로 건너 뜁니다.
이 옵션과 정보 정보를 사용하여 소스, 대상 또는 두 포트 번호를 모두 확장 할 수 있습니다.
제한 사항은 옵션을 추가하는 것만으로 기존 소프트웨어에서 자동으로 작동하지 않습니다. 구현 방법에 관계없이 옵션을 활용하려면 기존 소프트웨어 및 방화벽이 패킷을 무시하거나 평소와 같이 처리합니다. 소스 및 대상 포트 필드의 값을 사용합니다.
요컨대, 사용하기 쉽지 않으며 재사용 가능한 단일 리스너와 패킷의 페이로드에 포함 된 데이터를 사용하여 더 잘 수행 할 수 있습니다.
또한 소프트웨어에서 포트 재사용을보다 쉽게 허용 할 수 있으며, 이는 여러 클라이언트 연결에 서버 포트를 재사용함으로써이 제한을 극복하는 데 도움이 될 수 있습니다.
예를 들어 Rtsp는 IP 패킷의 페이로드에서 다양한 다른 헤더와 함께 SessionId 헤더를 사용하여 요청이 발행 된 연결을 결정하고 그에 따라 메시지가 전달 된 소켓이 소켓의 소켓과 동일하지 않은 경우 이에 따라 작동 할 수 있습니다 세션에 해당하는 원격 주소가 있으면 세션을 처리하기 위해 새 소켓으로 세션을 업데이트하거나 메시지를 거부하거나 응용 프로그램에 따라 다양한 다른 작업을 수행 할 수 있습니다.
Http 서버는이 서버 나 다른 유형의 서버도 수행 할 수 있습니다.
포트 재사용을 기억할 때 기억해야 할 중요한 점은 소스 IP 주소도 고려해야한다는 것입니다.
그래 넌 할수있어 !
예를 들어 Edgehill 암호화 서버와 같이 온라인에서 실행되는> 25.000.000 데몬이 있습니다.