포트포워딩

공유기에서 TCP 포트 하나를 PC로 포워딩하면, 폰은 PC 자체 인증서로 고정한 TLS 연결로 내 공인 주소에 접속합니다.

번역된 페이지입니다. 영어 문서와 내용이 다르면 영어 문서가 기준입니다. English

적합한 경우: 공유기 설정을 바꿀 수 있고, 인터넷 회선에 공인 IPv4 주소가 있을 때. 적합하지 않은 경우: 인터넷 사업자가 CGNAT(carrier-grade NAT) 뒤에 두었을 때(공유기의 WAN 주소가 100.64부터 100.127 사이로 시작하거나, IP 확인 사이트에 나오는 주소와 다를 때), 또는 회사에서 포트를 열 수 없을 때.

설정

  1. 네트워크에서 PC에 고정 주소를 줍니다(공유기의 DHCP 예약).

  2. 공유기에서 인터넷 쪽 TCP 8779를 PC 주소의 8779 포트로 포워딩합니다.

  3. 공인 주소를 확인합니다. 주소가 가끔 바뀐다면 공유기나 DDNS 서비스로 동적 DNS 이름을 만들고, 아래에서 그 이름을 씁니다.

  4. config.toml에 주소를 적어 서버에 알려 줍니다(파일 위치는 droidline doctor가 출력합니다).

    [remote]
    addresses = ["tls://203.0.113.5:8779"]   # 또는 "tls://home.example.net:8779"
  5. droidline serve를 다시 시작합니다.

  6. 새 폰은 droidline pair로 페어링합니다. 이미 페어링된 폰은 다음에 와이파이로 접속할 때 주소를 받아 갑니다.

TLS와 지문을 쓰는 이유

이 경로에서 폰은 PC가 직접 서명한 자체 인증서로 TLS 접속합니다. 페어링 QR 코드에 인증서의 SHA-256 지문이 들어 있어서 폰은 인증 기관 없이 인증서를 확인하고, 인터넷에서 PC를 흉내 내는 서버는 거부합니다. TLS 안에서는 다른 모든 경로와 같은 종단간 암호화가 동작합니다.

인증서는 처음 시작할 때 만들어져 서버 폴더에 보관됩니다(tls.crt, 키는 비밀 저장소에 있습니다). 인증서를 지우면 새 인증서가 만들어지고, 폰은 다시 페어링해야 합니다.

밖에서 확인하기

페어링된 폰의 와이파이를 끄고 droidline devices를 지켜보세요. 몇 초 안에 경로가 direct로 바뀌어야 합니다.