Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
티스토리 뷰
문제 상황
VPN으로 접속한 원격지의 Ubuntu Server에서 minikube를 사용한다.
minikube를 docker 컨테이너로 동작하므로 세팅하였으므로, minikube의 IP는 외부에서 접근할 수 없는 사설 대역대 이다.
minikube에서 nodeport로 웹서비스 파드를 열어 주더라도 minikube는 현재 Ubuntu Server에서만 접근 가능하다.
따라서 현재 로컬 PC에서도 접근가능하도록 Host VM인 Ubuntu Server에 포트포워딩을 적용해보자.
iptables를 통한 포트 포워딩
리눅스에서는 iptable을 이용하여 네트워크 필터링 및 주소 변환 등이 가능하다.
80번 포트를 목적지로 하는 패킷이 수신되면, 해당 패킷의 목적지를 모두 30511 포트로 변경한다.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 30511
-t nat
nat 테이블을 사용하는 규칙
-A PREROUTING
패킷이 라우팅되기 전에 적용.
따라서 패킷이 들어오는 즉시 규칙 적용.
-j REDIRECT
패킷이 규칙과 일치할때 목적치 포트를 로컬 머신은 다른 포트로 리다이렉트
하지만 현재는 로컬 PC가 minikube의 ip로 접근 자체가 불가능한 상황이다.
따다서 ubuntu server ip로 도달하는 요청을 minikube의 ip로 변경하는 IP 변경 작업까지 필요하다.
iptables DNAT(Destination Network Address Translation)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination <target_ip>:<target_port>
이번에는 -j DNAT 옵션을 통해 목적지를 다른 다른 IP로 변경하는 규칙을 적용한다.
최종 명령어
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.49.2:30511
적용 후 iptables -t nat -L로 적용 된것이 확인 되었다.
따라서 이 ubuntu server의 80 포트로 들어온 트래픽은 minikube 컨테이너인 192.168.49.2의 30511포트로 전달된다.
문제점
단 iptables로 DNAT를 수동으로 세팅한다면, minikube 컨테이너 재기동 시 ip가 바뀔 수 있다.
따라서 변치않는 정보로 세팅하는 방법이 필요하고 해당 방법을 좀더 고민해보자.
참조
'CS > 네트워크 & Ubuntu' 카테고리의 다른 글
VIP(Virtual IP) 란? (HSRP, Oracle VIP, Load Balancer) (0) | 2025.04.02 |
---|---|
HTTP와 Socket의 차이점 (실시간 채팅 서비스로 알아보는) (0) | 2024.09.19 |
Dual stack(IPv4 or IPv6)에서는 어떤 IP가 사용될까? (0) | 2024.08.27 |
스트리밍 서비스는 어떻게 이루어질까? (RTMP, HLS) (0) | 2024.08.21 |
OpenSSL을 활용한 인증서 구현하기(CA, HTTPS) (0) | 2024.02.27 |