나는 socat
들어오는 tcp6을 tcp4로 라우팅하는 데 사용합니다. 대상(tcp4)은 Pod 서비스 external-ip가 있는 Pod/컨테이너입니다. 컨테이너 내부에서는 ncat
포트 5555를 수신하는 데 사용합니다.
# socat TCP6-LISTEN:5555,reuseaddr,fork,bind=[fe80::250:56ff:fe91:bd5c%ens192] TCP4:10.40.5.125:5555 (Update)
socat이 연결을 거부했습니다(업데이트됨).
2018/07/27 01:15:41 socat[26914] E connect(5, AF=2 10.40.5.125:5555, 16): Connection refused
컨테이너 내에서 어떠한 승인도 받지 못했습니다( # ncat -4 -vv --exec cat -l -p 5555
).
tcp6 트래픽에 대한 자세한 정보를 얻기 위해 명령에서 &를 사용하려고 시도했지만 -vv
로그 파일에 중요한 로그가 기록되지 않았습니다.-lf
socat
tcp6 형식을 시도하기 전에 .tcp4 트래픽을 사용하여 위에 나열된 동일한 tcp4 대상으로 tcp4 트래픽을 라우팅할 수 있었습니다 socat
. 명령은 다음과 같습니다.
# socat TCP-LISTEN:5555,fork TCP:10.101.74.206:5555
누군가 내가 tcp6에 대해 누락된 점을 지적할 수 있습니까?
운영 체제: CentOS 7.5
답변1
$ ncat -4 -vv --exec cat -l -p 5555
nmap
ncat
해당 매개변수의 전체 경로가 필요합니다 --exec
. /bin/cat
대신 사용하십시오 cat
.
tcp6 트래픽에 대한 자세한 정보를 얻기 위해 socat 명령과 함께 -vv 및 -lf를 사용해 보았지만 로그 파일에 중요한 로그가 기록되지 않았습니다.
자세한 출력을 얻으려면 스위치를 여러 번 socat
지정하십시오 .-d
위의 문제 외에도 귀하의 설정을 성공적으로 재현했으며 예상대로 작동하는 것 같습니다. 문제의 범위를 좁히려면 디버그 출력을 확인하세요.
답변2
socat
IPv4 호스트에 대한 연결이 거부되는 데에는 여러 가지 이유가 있습니다. 시간을 절약하려면 stone
리피터를 설치하는 대신 사용하는 것이 좋습니다 socat
(이 패키지가 CentOS에 이미 포함되어 있기를 바랍니다).
yum install stone
디버그 수준 5(상세 모드)를 사용하여 실행합니다.
stone -ddddd 110.101.74.206:5555 5555/v6
연결 테스트를 사용 telnet
하고 모든 것이 정상이면 -ddddd
옵션을 제거하고 stone
프로덕션 모드에서 원하는 방식으로 실행하십시오. 예를 들어 stone
데몬으로 실행하고 20개의 하위 프로세스를 생성하는 경우:
stone -D -f 20 110.101.74.206:5555 5555/v6
그런 다음 실행 중인 stone
프로세스를 확인합니다.
ps aux | grep stone
추가 정보: