클라우드 shared dev 영역 연결오류 트라블슈팅 - 100-hours-a-week/16-Hot6-wiki GitHub Wiki
✅ [문제 해결 요약] 왜 MASQUERADE
가 필요했는가?
💡 상황
- 로컬 PC에서 WireGuard VPN으로 AWS 서버(
10.250.250.1
)에 접속
- AWS 서버는 VPC 피어링을 통해 다른 VPC(예: 10.10.0.0/16) 에 연결되어 있음
- 로컬에서 피어 VPC의 인스턴스(Ping 등)에 접근하려 했지만 응답이 없음
Q: 왜 ens4로 잘 되던 게 갑자기 안 됐을까?
원인 |
설명 |
인터페이스 이름 변경 |
VM 재시작/재생성/업데이트 등으로 ens4 → ens5로 바뀜 |
기존 설정 불일치 |
wg0.conf 에는 여전히 ens4 로 되어 있어서 다시 실행할때마다 NAT이 안 먹힘 |
원인
항목 |
설명 |
출발지 IP 인식 불가 |
로컬 PC의 VPN IP(예: 10.250.250.3 )는 AWS 내부에서 알려지지 않은 사설 IP |
응답 경로 없음 |
피어 VPC는 10.250.250.x 주소로 응답할 수 있는 경로를 모름 |
결과 |
요청은 AWS까지 도달하지만, 응답은 로컬로 돌아오지 않음 |
임시 해결 방법
sudo iptables -t nat -A POSTROUTING -s 10.250.250.0/24 -o ens5 -j MASQUERADE
항목 |
설명 |
-t nat |
NAT(Network Address Translation) 테이블에 설정 |
-A POSTROUTING |
패킷이 나가기 직전에 변형 적용 |
-s 10.250.250.0/24 |
출발지 IP가 로컬 VPN 대역인 경우 |
-o ens5 |
AWS 내부 네트워크 인터페이스로 나갈 때 |
-j MASQUERADE |
출발지 IP를 EC2의 내부 IP (예: 10.0.0.x) 로 변환 |
영구 해결 방법
-
wg0.conf
의 ens4
→ ens5
로 수정
-
WireGuard 재시작
sudo wg-quick down wg0 && sudo wg-quick up wg0
-
다시 잘 작동됨 🎉
효과
- 피어 VPC 입장에서는 "10.250.250.3"이 아닌 "10.0.0.236" 으로 트래픽이 들어옴
- 이는 정상적인 내부 IP로 인식되어 응답을 반환
- 로컬 PC는 WireGuard를 통해 정상적으로 응답을 수신
🛠 설정 예시 (wg0.conf
)
PostUp = sysctl -w net.ipv4.ip_forward=1; \
iptables -A FORWARD -i wg0 -j ACCEPT; \
iptables -A FORWARD -o wg0 -j ACCEPT; \
iptables -t nat -A POSTROUTING -s 10.250.250.0/24 -o ens5 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; \
iptables -D FORWARD -o wg0 -j ACCEPT; \
iptables -t nat -D POSTROUTING -s 10.250.250.0/24 -o ens5 -j MASQUERADE