이중 NAT를 통한 Plex

이중 NAT를 통한 Plex

내 ISP 캐리어급 NAT를 우회하려고 시도 중인데 여전히 외부에서 내 플렉스 서버에 액세스할 수 있습니다.

두 가지 가이드를 찾았습니다.

http://www.donaldsimpson.co.uk/2016/10/24/tunneling-out-of-carrier-grade-nat-cgnat-with-ssh-and-aws/

https://amoss.me/2017/05/port-forwarding-behind-a-carrier-grade-nat/

구현하려면 공용 IP가 있는 digitalocean에서 호스팅하는 우분투 16.04 VM이 있습니다. 내 plex 서버(또한 ubuntu 16.04)에서 원격 디지털 오션 서버로 SSH를 통해 연결할 수 있습니다.

내 Plex 서버에서 다음 명령을 실행합니다.

ssh -nNTv -R 32400:localhost:32400 root@<public IP of remote host>

그리고 화면에서 계속 실행되도록 놔두세요.

터널이 성공했습니다. 원격 호스트에서는 루프백 인터페이스에 대한 netstat 및 nc -v가 있습니다.

root@Ubuntu1604:~/.ssh# nc -v 127.0.0.1 32400
Connection to 127.0.0.1 32400 port [tcp/*] succeeded!

root@Ubuntu1604:~/.ssh# netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:32400         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:32400               :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
root@Ubuntu1604:~/.ssh# 

그러나 보시다시피 공용 IP를 수신하지 않습니다. 루프백 외에 유일한 활성 인터페이스는 공용 IP 주소가 할당된 eth0입니다. 따라서 :32400에 액세스하려고 하면 remote server public IP아무것도 얻지 못합니다.

원격 서버가 32400 eth0에서 수신 대기하면서 이를 여전히 localserver:32400으로 전달하도록 하려면 어떻게 해야 합니까?

답변1

이미 빈 바인딩 주소가 있었는데 문제는 다음과 같이 모든 주소에 바인딩하도록 지정해야 한다는 것이었습니다.

ssh -nNTv -R 0.0.0.0:32400:localhost:32400 root@<public IP of remote host>

답변2

에서man 1 ssh:

-R [bind_address:]port:host:hostport

[…]

기본적으로 서버의 청취 소켓은 루프백 인터페이스에만 바인딩됩니다. 이는 를 지정하여 재정의할 수 있습니다 bind_address. 비어 bind_address있거나 address 는 *원격 소켓이 모든 인터페이스를 수신해야 함을 나타냅니다. 원격 바인딩 주소 지정은 서버 GatewayPorts옵션이 활성화된 경우에만 성공합니다( 참조 sshd_config(5)).

따라서 먼저 시도하는 가장 쉬운 방법은 빈 값을 지정하는 것입니다 bind_address.

-R :32400:localhost:32400

이니셜을 참고하면 :차이가 납니다.

관련 정보