2014-12-18 11 views
4

mosh를 통해 NAT 뒤에있는 서버에 연결하고 싶습니다. 라우터를 만져서 upnp 지원으로 설정할 수는 없지만, 앞으로 UDP 포트 9807-> 60000과 ssh 포트를 요청합니다.mosh를 사용하여 NAT 뒤에있는 서버에 연결하는 방법

그래서 클라이언트 및/또는 서버 측에서 명령 줄 args 또는 conf 파일을 통해 서버 포트를 지정해야합니까?

참고 : 다음은 작동하지 않습니다 !!

mosh -p 9807 [email protected]_server 

편집 : 내가 처음 내 서버에 ssh를, 수동 MOSH 서버 -p 60000을 실행 한 다음 다른 터미널에서 -p 9807 my_server가를 MOSH하려고했습니다

.

Error binding to IP my_server_ip: bind: Address already in use 

말했다 : 포트 포워드가 작동

  1. 이 오류가 발생합니다.
  2. MOSH 포트에서 60000

감사를 MOSH 서버를 설치하려고합니다.

답변

2

문제는 포트 리디렉션에 있습니다. 라우터의 NAT 전달은 <domain>:9807으로 전송되는 수신 트래픽을 <internal-ip>:60000으로 보내고 있습니다. -p 옵션을 사용하여 mosh를 시작하면 클라이언트는 ssh를 통해 서버에 연결하고 지정된 포트에서 수신 대기하도록 서버에 지시합니다. 그런 다음 mosh-server는 열려있는 포트 번호 (이 경우 사용자가 지정한 포트 번호)를 다시 클라이언트에 전달합니다. 클라이언트는 ssh 연결을 닫고 <domain>:<port>에 연결을 시도합니다. 클라이언트가 서버가 수신하는 동일한 포트와 통신하려고합니다. 문제는 NAT 라우터가 WAN 쪽의 한 포트에서 NAT로 연결된 다른 포트로 트래픽을 리디렉션한다는 것입니다. 이것은 작동하지 않습니다.

그가없는 경우 같은 포트 9807.

에 당신의 MOSH - 서버 시스템에 WAN 측의 라우터 앞으로 포트 9807를 요청하는 등의 직접 번역을 얻을 것이다 가장 좋은 것은 옵션, 내가 생각할 수있는 차선책은 iptables를 사용하여 서버 컴퓨터의 트래픽을 조작하는 것입니다.

  1. 컴퓨터에 MOSH 클라이언트가 아마 NAT를 통해 컴퓨터에 전달 ssh 연결을 (열립니다

    iptables -t nat -A PREROUTING -p udp --dport 60000 -j REDIRECT --to-port 9807 
    

    무엇 일어나는 것은 당신이

    mosh -p 9807 [email protected]_server 
    

    을 기술로 클라이언트를 실행 라우터)를 서버에 보내면, mosh-server 포트 9807에서 수신 대기합니다.클라이언트를 말하는

  2. MOSH 서버 종료는 UDP 포트는 9807
  3. 는 MOSH 클라이언트가 SSH 연결을 닫고 9807
  4. 는 NAT 라우터는보고 포트에서 서버에 연결을 시도되는 연결하는 ssh를 통해 연결 포트 9807에이 들어오는 트래픽 및 포트에서 서버로 전송 60000
  5. 머신이, (이 경우, 서버의 IP) iptables의 규칙과 일치하고 목적지로 리디렉션 UDP, 이상 포트 60000에서 패킷을 수신하지만, 포트에서 9807
  6. 클라이언트 트래픽의 SRC 포트는 NAT 라우터에 의해 변경되지 않으므로 mosh-server는 클라이언트가 청취중인 포트에서 클라이언트로 패킷을 되돌려 보내고 제대로 수신됩니다.