socat
DS-Lite IPv6 케이블 연결 뒤에서 실행되는 OpenVPN 서버에 IPv4 연결을 매핑하기 위해 portmapper를 사용하려고 합니다 .
//EDIT 루트가 아닌 사용자와 를 사용해 보았 root
으나 두 사용자 모두 동일한 결과를 얻었습니다. //편집하다
목표는 OpenVPN을 통해 휴대폰에서 (IPv4) 스마트 홈 장치에 연결할 수 있는 것입니다.
실행 중인 서버에서 집에 있는 라우터를 사용할 socat
수 있습니다 . ping6
IPv6 포트 전달도 활성화되어 OpenVPN 서버를 실행하는 집에서 Raspberry Pi로 1194/udp를 전달합니다.
socat
이제 문제는 휴대폰에서 OpenVPN에 연결하려고 하면 오류가 표시된다는 것입니다.
root@scw-31f6c8:~/bin# socat -d -d UDP4-LISTEN:63530,fork UDP6:xxx.dynv6.net:1194
2017/12/27 13:53:01 socat[15428] N listening on UDP AF=2 0.0.0.0:63530
2017/12/27 13:53:07 socat[15428] N accepting UDP connection from AF=2 xx.xxx.xxx.xx:1319
2017/12/27 13:53:07 socat[15428] N forked off child process 15429
2017/12/27 13:53:07 socat[15428] N listening on UDP AF=2 0.0.0.0:63530
2017/12/27 13:53:07 socat[15429] N opening connection to AF=10 [2a02:810c:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]:1194
2017/12/27 13:53:07 socat[15429] N successfully connected from local address AF=10 [2001:0bc8:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx]:41641
2017/12/27 13:53:07 socat[15429] N starting data transfer loop with FDs [5,5] and [6,6]
2017/12/27 13:53:07 socat[15429] E read(6, 0xf97acc0, 8192): Permission denied
2017/12/27 13:53:07 socat[15429] N exit(1)
2017/12/27 13:53:07 socat[15428] N childdied(): handling signal 17
2017/12/27 13:53:07 socat[15428] W waitpid(): child 15429 exited with status 1
언뜻보기에는 모든 것이 나타날 때까지 괜찮아 보입니다 read(6, 0xf97acc0, 8192): Permission denied
.
현재로서는 이것이 실행 중인 서버의 버그인지, 아니면 socat
우리 집의 IPv6 엔드포인트와의 통신 문제와 관련된 것인지 알 수 없습니다.socat
문제가 무엇인지 알아내는 방법에 대한 조언이 있습니까?
//편집하다
또한 잘못된 서버 측 구성과 관련이 없는지 확인하기 위해 다른 컴퓨터(uberspace, scaleway)에서도 시도해 보았습니다. 내 쪽에서 뭔가 잘못되었음을 나타낼 수도 있습니다. 하지만 아직 본 적이 없습니다.
답변1
같은 문제가 있습니다. 어떤 이유로 내 Fritzbox의 포트 매핑에 잘못된(또는 오래된) IPv6 주소가 추가되었으며 해당 주소는 VPN 서버의 포트 매핑이 아닌 것으로 나타났습니다. 수정 후 작동했습니다.
편집: fritzbox의 포트 매핑에서 IPv6 주소를 xx8d에서 잘못된 xxd8로 변경하여 로그를 재현할 수 있었습니다.
$ socat -d -d UDP4-LISTEN:2194,fork UDP6:xxxxx.dynv6.net:2194
2021/07/14 22:30:14 socat[] N listening on UDP AF=2 0.0.0.0:2194
2021/07/14 22:30:28 socat[] N accepting UDP connection from AF=2 109.42.112.115:59217
2021/07/14 22:30:28 socat[] N forked off child process 10569
2021/07/14 22:30:28 socat[] N listening on UDP AF=2 0.0.0.0:2194
2021/07/14 22:30:28 socat[] N opening connection to AF=10 [2a00:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xx8d]:2194
2021/07/14 22:30:28 socat[] N successfully connected from local address AF=10 [2a03:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxbf]:50334
2021/07/14 22:30:28 socat[] N starting data transfer loop with FDs [5,5] and [6,6]
2021/07/14 22:30:28 socat[] E read(6, 0x55d9a7c15da0, 8192): Permission denied
2021/07/14 22:30:28 socat[] N exit(1)
2021/07/14 22:30:28 socat[] N childdied(): handling signal 17 here
올바른 값인 xx8d로 다시 변경한 후 다시 작동했습니다.