UCSPI-TCP 방식
netcat 이외의 툴셋이 있습니다. 다음은 그중 몇 가지를 사용하는 방법입니다. 그들은 모두 service
당신 func
이 무엇이든간에 당신을 실행 하는 스크립트가 있다고 가정합니다 :
#! / bin / sh
읽는 동안 -r MESSAGE
하다
echo 1> & 2 "$ {TCPREMOTEIP}" "$ {TCPREMOTEPORT}"rx "$ {MESSAGE}"
펑크
끝난
TCPREMOTEIP
및 TCPREMOTEPORT
환경 변수는 UCSPI-TCP 프로토콜에 의해 정의된다.
스크립트는 다양한 도구 세트를 사용하여 TCP 연결마다 개별 프로세스로 생성됩니다. 다음은 짧은 스크립트 내에서 사용 된 도구입니다. 종래라는 이름의 이러한 스크립트는 run
, 하나는 데몬 툴즈 가족 서비스 관리자에서 실행할 것입니다 방법이다. 물론 직접 호출 할 수도 있습니다.
번스타인 ucspi-tcp
Daniel J. Bernstein의 ucspi-tcp를 사용 tcpserver
하여 service
스크립트를 생성합니다 .
#! / bin / sh -e
exec tcpserver -v -P -R -H -10 0.0.0.0 7777 ./ 서비스
Bernstein ucspi-tcp의 IPv6 가능 고급 버전이 있습니다. Erwin Hoffman tcpserver
을 사용하면 IPv4와 IPv6을 하나로 처리하려고 시도하고 (운영 체제에서 지원하는 경우 일부는 지원하지 않음) service
스크립트를 생성합니다 .
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 :: 0 7777 ./ 서비스
Bercot s6-networking, s6 및 execline
Laurent Bercot의 s6-networking을 사용 s6-tcpserver4
하여 s6-tcpserver6
IPv4와 IPv6을 별도로 처리하고 service
스크립트를 생성하십시오 .
#! / command / execlineb
s6-tcpserver4 -v 0.0.0.0 7777
./서비스
#! / command / execlineb
s6-tcpserver6 -v :: 0 7777
./서비스
체인 직전 s6-tcpserver-access
과 같은 툴을 사용하여보다 복잡한 서버를 구축 할 수 있습니다 .s6-applyuidgid
./service
nosh UCSPI 도구
nosh 툴셋을 사용하면 tcp-socket-listen
운영 체제가 지원하는 경우 TCP 소켓 에서 수신 대기하고 IPv4 및 IPv6을 다시 처리 tcp-socket-accept
하고 service
스크립트를 생성하는 체인을 다시 처리 합니다 .
#! / bin / nosh
tcp-socket-listen --combine4and6 :: 7777
tcp-socket-accept --verbose --localname 0
./서비스
또는 OpenBSD와 같은 운영 체제에서 두 개의 개별 프로세스를 실행합니다.
#! / bin / nosh
tcp- 소켓 청취 0.0.0.0 7777
tcp-socket-accept --verbose --localname 0
./서비스
#! / bin / nosh
tcp-socket-listen :: 7777
tcp-socket-accept --verbose --localname ::
./서비스
체인 ucspi-socket-rules-check
과 같은 도구를 삽입하여보다 복잡한 서버를 구축 할 수 있습니다 setuidgid
.
#! / bin / nosh
tcp-socket-listen --combine4and6 :: 7777
setuidgid 권한이없는 사용자
tcp-socket-accept --verbose --localname 0
ucspi-socket-rules-check --verbose
./서비스
페이 프 ipsvd
Gerrit Pape의 ipsvd로 스크립트를 tcpsvd
생성합니다 service
:
#! / bin / sh -e
exec tcpsvd -v 0.0.0.0 7777 ./ 서비스
UCSPI-UDP
service
표준 입력이 스트림 소켓 인 경우 공통 스크립트가 처리 할 수 있습니다 . 그러나 TCP를 명시 적으로 지정하지 않았습니다.
앞서 언급 한 툴킷 중 일부는 UDP 서버를 사용하여 TCP 서버를 빌드하는 방법과 유사한 방식으로 UDP 서버를 빌드하는 데 사용할 수 있지만 ( udp-socket-listen
쉘의 내장은 그렇지 않으므로) 쉘 스크립트를 사용하여 실제 서비스 프로그램을 빌드하는 것은 까다 롭습니다. 표준 입력이 데이터 그램 소켓 일 때 반드시 잘 대처하십시오 .
추가 자료
- 실험 계획안:
- 툴셋 :
- 다니엘 제이 번스타인. ucspi-tcp . cr.yp.to.
- s6- 네트워킹 . 로랑 버 코트 skarnet.org.
- s6 . 로랑 버 코트 skarnet.org.
- 조나단 데 보이네 폴라드 (2016). nosh . 소프트웨어.
- ipsvd . Gerrit Pape. smarden.org.
- 참조 매뉴얼 :