서로 다른 게이트웨이를 가진 NIC 라우팅 설정 방법

반응형

서로 다른 게이트웨이를 가진 NIC 라우팅 설정 방법

서로 다른 게이트웨이를 가진 NIC 라우팅 설정 방법

서로 다른 게이트웨이를 가진 NIC 라우팅 설정 방법

1️⃣ 문제 상황 — 같은 스위치(L2)지만 게이트웨이가 다른 NIC 구성

서버에 NIC가 2개 있고 두 NIC 모두 같은 스위치에 연결되어 있지만, 각각 다른 VLAN 또는 다른 게이트웨이(GW)를 사용해야 하는 상황이 있다. 이 경우 단순 기본 라우팅만 사용하면 트래픽이 엉뚱한 GW로 나가는 문제가 발생한다.

✔ NIC1 → 192.168.10.100 (GW: 192.168.10.1)
✔ NIC2 → 172.16.20.100 (GW: 172.16.20.1)
✔ 같은 스위치에 연결되어 있어도 “게이트웨이 분리” 필요
✔ 일반 라우팅만으로는 해결 불가 → Policy Routing 필요

2️⃣ A서버·B서버 구성 예시

📌 A 서버 NIC 정보

eth0 → 192.168.10.10
GW0 → 192.168.10.1

eth1 → 172.16.20.10
GW1 → 172.16.20.1
    

📌 B 서버 NIC 정보

eth0 → 192.168.10.20
eth1 → 172.16.20.20
    

두 서버가 서로 통신하면서도, eth0 → 192.168.10.x 경로 / eth1 → 172.16.20.x 경로로 나눠야 한다.

3️⃣ 해결 방법 — Policy Routing(ip rule) + 테이블 분리

NIC마다 별도 라우팅 테이블을 생성하고 해당 NIC의 IP에서 나가는 패킷은 그 NIC 전용 테이블을 사용하도록 지정하는 방식이다.

✔ NIC별 라우팅 테이블 생성
✔ ip rule 로 출발지 기반(Source Based Routing) 구성
✔ 동일 스위치(L2)여도 게이트웨이를 완전히 분리 가능
✔ Linux 다중 NIC 환경의 가장 표준적인 구성

4️⃣ A 서버 설정 예시 (Nic 2개, GW 2개)

📌 1) 라우팅 테이블 이름 추가

echo "100 table_eth0" >> /etc/iproute2/rt_tables
echo "200 table_eth1" >> /etc/iproute2/rt_tables
    

📌 2) NIC별 라우팅 테이블 생성

# eth0 전용 라우팅
ip route add 192.168.10.0/24 dev eth0 table table_eth0
ip route add default via 192.168.10.1 dev eth0 table table_eth0

# eth1 전용 라우팅
ip route add 172.16.20.0/24 dev eth1 table table_eth1
ip route add default via 172.16.20.1 dev eth1 table table_eth1
    

📌 3) 출발지 기반 규칙 추가

ip rule add from 192.168.10.10/32 table table_eth0
ip rule add from 172.16.20.10/32 table table_eth1
    

📌 4) 캐시 삭제

ip route flush cache
    
✔ eth0에서 나가는 패킷 → 192.168.10.1로 고정
✔ eth1에서 나가는 패킷 → 172.16.20.1로 고정
✔ 라우팅 충돌 없음 / 게이트웨이 혼선 없음

5️⃣ B 서버 설정 예시 (A 서버와 동일 원리)

B 서버는 NIC IP만 다르고 원리는 동일하다.

# 테이블 등록
echo "100 table_eth0" >> /etc/iproute2/rt_tables
echo "200 table_eth1" >> /etc/iproute2/rt_tables

# eth0 라우팅
ip route add 192.168.10.0/24 dev eth0 table table_eth0
ip route add default via 192.168.10.1 dev eth0 table table_eth0

# eth1 라우팅
ip route add 172.16.20.0/24 dev eth1 table table_eth1
ip route add default via 172.16.20.1 dev eth1 table table_eth1

# 출발지 기반 규칙
ip rule add from 192.168.10.20/32 table table_eth0
ip rule add from 172.16.20.20/32 table table_eth1

ip route flush cache
    

6️⃣ 왜 이렇게 해야 할까? (네트워크 구조 설명)

같은 스위치(L2)에 연결되었더라도, 서로 다른 VLAN 또는 서로 다른 라우팅 도메인을 사용할 수 있다. Linux 기본 라우팅은 “하나의 기본 게이트웨이만 허용”하기 때문에 NIC별 GW 지정이 불가능하다.

✔ 기본 라우팅 → GW 1개만 사용
✔ Policy Routing → NIC별 GW 사용 가능
✔ 대규모 IDC·금융/공공 환경에서 많이 쓰는 방식
✔ 다중 NIC 서버(Oracle RAC, NAS, DB Proxy 등)에서 필수 구성

7️⃣ 문제 상황별 체크포인트

  • 트래픽이 엉뚱한 GW로 나가면 → ip rule 누락 여부 확인
  • ping은 되는데 접속이 안 되면 → Reverse Path Filtering 확인 (`rp_filter`)
  • 양방향 정책이 필요한 경우 → A↔B 모두 Policy Routing 적용
  • 서버 재부팅 시 적용 → ifcfg 또는 NetworkManager에 영구 설정 필요
반응형
LIST