키워드
: NAT, 포트포워딩, 공인IP, 사설IP, MAC Address, DHCP, 10022
완성 아키텍처

지금까지는 우리 집 Wi-Fi 안(LAN)에서만 노는 서버였다면,
이제는 카페나 지하철에서도 내 서버에 접근할 수 있도록 공유기에 구멍을 뚫어보자 !
공유기의 역할 : NAT & 포트포워딩
(1) NAT 역할
- 외부에서 공인IP로 패킷이 오면 공유기는 고민에 빠진다.
- "어? 22번 포트로 접속요청이 왔네? 근데 우리 집에는 맥북도 있고, 갤북도 있고 등등.. 이걸 누구한테 주지..?"
- 이때 공유기에게 이정표를 세워주는 작업이 바로 포트포워딩
(2) 포트포워딩의 핵심 : Mapping
- 결국 포트포워딩은
외부포트와내부 IP:내부 포트를 연결하는 Table을 만드는 것 - ex: 외부포트 22로 도착한 편지는 172.30.1.9라는 내부IP의 22번이라는 내부포트로 전달해주는것.
💡 공인 IP vs 사설 IP
현재 갤북(홈서버)의 IP는 `172.30.1.9` 하지만 이건 사설IP.
외부에서 접속하려면 공유기가 ISP로부터 할당받은 공인IP가 필요하다.
1. 갤북의 IP 주소 고정 (DHCP 할당)
실컷 포트포워딩을 해놔도 IP가 바뀌어 버리면 무용지물이다.
때문에 공유기 설정 페이지에 접속하여 갤북IP를 아예 못 박아둬야 한다.
공유기 설정페이지로 접속해보자.
ip route명령어의 결과 중 default via 옆에 나오는 주소로 접속.

우리집은 KT와이파이를 사용한다. 접속 시 비밀번호는 공유기 스티커에 붙혀진 암호키를 입력해주자.

장치설정 - 네트워크 관리 - LAN 연결 설정
+ 추가로 맥북도 고정해주자
(SMB 쓰다가 IP주소가 바뀌어 버리면 곤란)

이때 사설IP를 고정할 때는 무엇을 보고 고정하는건가? 라는 질문이 떠오르는데,
기기마다 고유하게 있는 NIC, 거기에 할당되는게 MAC주소를 보고 고정한다.
2. 포트포워딩 테이블 작성
이때 SSH접속을 위해 외부포트 마저 22번포트로 포트포워딩해두지 말자.
전 세계 해커들은 항상 22번포트를 여기저기 찔러보고있다 → 브루트포스 공격
→ 나는 10022로 했다.

⚠️ 트러블슈팅 : 왜 접속이 안 되지? (Timeout)

우선 내부 네트워크인 Wi-Fi로 22번포트 접속시 이전처럼 정상 동작하는 것을 확인 후 그다음에
# 모바일 데이터를 사용하는 상태에서
ssh -p 10022 daepark@[공인IP]
를 입력했는데,, 왜 타임아웃이지..?
(1) 아하 ufw! ...아닌데?
어 아닌데? 들어오는게 10022번포트일뿐이지 서버에 들어갈때는 정상적으로 22번포트인데?
(2) 허용된 소스IP가 문제였네.
ufw로 22번 포트에 대해 모두 허용 / 특정 대역 허용 / 특정 IP 허용 중에
우리집 네트워크 대역만 허용했었음.
# 모든 소스IP에 대해 접속 허용
sudo ufw allow 22

이제 접속완료!
