BGP 지원 라우터로의 여정 - KT 공유기에서 MikroTik으로
홈 쿠버네티스에서 BGP 피어링이 필요해서 MikroTik을 도입했습니다. KT 공유기에서 MikroTik으로 마이그레이션한 과정을 공유합니다.
BGP가 필요하다고 생각했다
홈 쿠버네티스 클러스터에서 Cilium Gateway API를 사용하려고 했습니다. 여러 설정을 시도했는데, 외부에서 접속이 안 됩니다.
L2 Announcement로 VIP를 광고하는 상태에서 kubeProxyReplacement 활성화 등을 시도해봐도 동작하지 않아서, “라우팅 레벨에서 직접 처리하는 BGP면 다르지 않을까?”라는 생각이 들었습니다. 문제는 집에 있는 KT 공유기가 BGP를 지원하지 않는다는 것.
결국 BGP를 지원하는 라우터로 교체하기로 했습니다.
스포일러: 나중에 알고 보니 진짜 원인은 Cilium v1.18.5의 hostNetwork reconciler 버그였습니다. 자세한 내용은 Gateway API 전환기 (2)에서.
MikroTik 선택
홈랩 예산으로 BGP를 지원하는 라우터를 찾아봤습니다.
선택 기준:
- BGP 지원 필수
- 10만원대 가격
- GUI 관리 도구 지원
MikroTik hEX S (RB760iGS)를 선택했습니다.
| 항목 | 스펙 |
|---|---|
| 포트 | 5x Gigabit Ethernet |
| OS | RouterOS |
| BGP | 지원 |
| 관리 도구 | WinBox (GUI) |
| 가격 | ~13만원 |
Ubiquiti EdgeRouter나 pfSense도 고려했지만, 가격 대비 기능이 MikroTik이 가장 적합했습니다. WinBox라는 GUI 도구를 제공하는 점도 장점입니다.


마이그레이션 전략
기존 네트워크를 최대한 유지하면서 라우터만 교체하는 전략을 세웠습니다.
AS-IS 구성:
architecture-beta group internet(cloud)[Internet] group home(server)[Home Network]
service isp(internet)[ISP] in internet service giga(server)[GIGA UTP] in home service ktrouter(server)[KT Router] in home service node1(server)[node1] in home service node2(server)[node2] in home service node3(server)[node3 GPU] in home
isp:R --> L:giga giga:R --> L:ktrouter ktrouter:R --> L:node1 ktrouter:R --> L:node2 ktrouter:R --> L:node3KT 공유기가 라우터 + 스위치 + WiFi AP 역할을 모두 담당하고 있었습니다.
이전할 설정:
- DHCP 고정 할당 (MAC-IP 매핑)
- 포트 포워딩 규칙
전략: KT 공유기의 라우터 기능만 MikroTik으로 이전하고, 스위치 + WiFi AP 역할은 그대로 유지
물리 구성 변경
MikroTik을 라우터로, KT 공유기를 스위치 + WiFi AP로 구성했습니다.
architecture-beta group internet(cloud)[Internet] group home(server)[Home Network]
service isp(internet)[ISP] in internet service giga(server)[GIGA UTP] in home service mikrotik(server)[MikroTik hEX S] in home service ktswitch(server)[KT Switch WiFi] in home service node1(server)[node1] in home service node2(server)[node2] in home service node3(server)[node3 GPU] in home
isp:R --> L:giga giga:R --> L:mikrotik mikrotik:R --> L:ktswitch ktswitch:R --> L:node1 ktswitch:R --> L:node2 ktswitch:R --> L:node3케이블 연결:
- ISP → GIGA UTP → MikroTik ether1 (WAN)
- MikroTik ether2 → KT 공유기 LAN 포트
KT 공유기 설정:
- DHCP 서버 비활성화
- 라우터 기능 끔 (브릿지 모드)
기존 WiFi와 유선 연결이 모두 그대로 유지됩니다.
MikroTik 기본 설정
WinBox로 기존 네트워크 설정을 그대로 이전했습니다.
Mac에 연결 후 WinBox에서 MikroTik 장비가 검색된 화면
| 항목 | 설정값 |
|---|---|
| LAN IP | 172.30.1.1/24 |
| DHCP Pool | 172.30.1.150-200 |
| DNS | 8.8.8.8, 8.8.4.4 |
DHCP 고정 할당:
- node1: 172.30.1.20
- node2: 172.30.1.70
- node3-gpu: 172.30.1.82
동작 확인 - 예상치 못한 문제들
라우터 교체 후 몇 가지 추가 작업이 필요했습니다.
공인 IP 변경 → Route53 업데이트
라우터 교체로 공인 IP가 변경되었습니다.
<기존 공인 IP> → <새 공인 IP>Route53에 예전 IP가 설정되어 있어서 도메인 접속이 안 됐습니다. *.heeho.net A 레코드를 새 공인 IP로 업데이트해서 해결했습니다.
Hairpin NAT - 내부에서 도메인 접속
외부에서는 접속되는데, 내부에서 grafana.heeho.net 접속 시 타임아웃이 발생했습니다.
KT 공유기에서는 문제없이 됐었는데, 왜 MikroTik에서는 안 될까요?
원인: KT 공유기 같은 소비자용 라우터는 Hairpin NAT(내부 → 공인IP → 내부)을 자동으로 처리해준다고 합니다.
sequenceDiagram participant Client as 내부 클라이언트 participant Router as MikroTik participant Server as 내부 서버
Client->>Router: grafana.heeho.net 요청 Note over Router: DNS: <공인 IP> Note over Router: dst-nat: 공인IP:443 → VIP(172.30.1.7):443 Note over Router: src-nat: 172.30.1.x → 172.30.1.1 Router->>Server: 요청 전달 (VIP 경유) Server->>Router: 응답 Router->>Client: 응답 전달해결: dst-address 기준 dstnat + srcnat masquerade 조합으로 Hairpin NAT 구성

현재 스크린샷에서는 누락되었지만, 기존 NGINX Ingress(172.30.1.6)로 향하는 포트포워딩도 그대로 유지했습니다. Gateway API로 전환하는 동안 서비스 중단을 최소화하며 병행 운용하기 위해서입니다.
참고: 현재 포트포워딩은 VIP(172.30.1.7)를 가리키며, BGP 기반 라우팅으로 동작합니다. 이 구성은 Gateway API 전환기 (2)에서 자세히 다룹니다.
Kubernetes 인증서 문제
kubectl 명령 시 인증서 오류가 발생했습니다.
x509: certificate is valid for 10.233.0.1, 172.30.1.20, 127.0.0.1,<기존 공인 IP>, ... not <새 공인 IP>K8s API 인증서의 SAN(Subject Alternative Name)에 새 공인 IP가 없어서 발생한 문제입니다.
임시 해결: kubeconfig에서 공인 IP 대신 내부 IP(172.30.1.20:6443) 사용
최종 확인
| 항목 | 상태 | 비고 |
|---|---|---|
| MikroTik 기본 설정 | ✓ | LAN IP, DHCP, DNS |
| 포트 포워딩 | ✓ | dst-address 기준 |
| Hairpin NAT | ✓ | 내부→공인IP→내부 동작 |
| 일반 인터넷 | ✓ | curl google.com |
| 외부에서 서비스 접속 | ✓ | grafana.heeho.net |
| 내부에서 서비스 접속 | ✓ | Hairpin NAT 경유 |
| kubectl | ✓ | 내부 IP 사용 |
결과 - BGP 준비 완료
완료된 것:
- KT 공유기 → MikroTik 라우터 마이그레이션
- 기존 서비스 정상 동작 확인
얻은 것:
- BGP 지원 라우터
- 세밀한 NAT 제어 (RouterOS)
- CLI 기반 설정 관리
다음 단계: MikroTik과 Cilium BGP 피어링으로 VIP 기반 동적 라우팅 구현
다음 콘텐츠: Gateway API 전환기 (2) - MikroTik과 Cilium BGP 피어링, Cilium 버그 해결, VIP 기반 동적 라우팅