CS 공부/기타

[ETC] 다중 인터페이스 환경에서의 라우팅 테이블 설정

강_토발즈 2025. 9. 2. 20:21

 

서버 장비에는 기본적으로 2개 이상의 랜포트(NIC, Network Interface Card)가 탑재되는 경우가 많다.
이는 하나의 서버가 동시에 여러 네트워크 망에 연결될 수 있도록 하기 위함이다.
예를 들어, 하나의 포트는 내부 관리망(예: 10.8.x.x)과 연결하고, 다른 하나는 서비스망(예: 168.16.x.x)과 연결하여 서로 다른 트래픽을 분리할 수 있다. 이렇게 하면 보안과 성능 관리 측면에서 유리하다.

 

하지만 이렇게 랜 포트에 각각 다른 대역의 네트워크 망을 설정했을 때, 가끔 A 네트워크 내의 장비로 가야 할 트래픽이, B 네트워크 인터페이스를 통해 가려고 해서 통신이 안되는 경우가 발생한다. 이 때는 직접 장비 대역을 네트워크 인터페이스 A 를 통해 A 네트워크 대역으로(게이트웨이로) 가도록 설정 해주어야 한다. 

 

오늘은 이렇게 직접 라우팅 테이블을 추가하는 방법과 재부팅 하면 날아가버리는 이 설정을 영구 적용하는 법에 대해 알아보자.

 

 

1. 인터페이스별 다른 대역의 IP 설정

리눅스에서 네트워크 인터페이스는 각각 독립적으로 IP 주소를 가질 수 있다.
예시:

  • eno1 → 100.80.10.200/24
  • eno2 → 168.160.100.248/16

이처럼 인터페이스마다 다른 네트워크 대역의 IP를 할당하면, 서버는 동시에 여러 망에 참여할 수 있다.
하지만 여기서 문제가 생긴다.
운영체제는 목적지 IP가 어느 인터페이스를 통해 나가야 하는지 라우팅 테이블을 보고 판단하는데, 설정이 잘못되어 있으면 원하는 인터페이스로 트래픽이 안 나간다.

 

2. 특정 대역으로 ping 이 안 나가는 이유

라우팅 테이블이 올바르게 설정되지 않으면, 목적지 IP에 대한 경로를 찾지 못해 기본 게이트웨이(default route) 로 트래픽을 보낸다.
예를 들어 서버에 두 개의 default route가 있고, 그 중 하나의 metric이 더 낮다면 커널은 그 경로를 우선 사용한다.
이 때문에 100.130.x.x 같은 특정 대역으로 패킷을 보내야 하는데, 실제로는 다른 인터페이스(예: eno2)를 통해 나가서 ping이 실패한다.

 

 

3. 해결: 라우팅 테이블 수동 설정

이 문제를 해결하려면 목적지 네트워크 대역별로 정확한 라우팅 경로를 추가해야 한다.

특정 아이피 대역이 eno1 인터페이스를 통해 트래픽이 가야 하고, eno1 에 설정된 게이트웨이 주소가 100.80.10.254 라면 아래와 같이 명령어를 입력하여 라우팅 테이블을 수동으로 추가해야 한다.

# 100.130.0.0/23 대역을 eno1 경유로 설정
sudo ip route add 100.130.0.0/23 via 100.80.10.254 dev eno1

# 100.130.20.0/23 대역을 eno1 경유로 설정
sudo ip route add 100.130.20.0/23 via 100.80.10.254 dev eno1

# 10.100.200.0/24 대역을 eno1 경유로 설정
sudo ip route add 10.100.200.0/24 via 100.80.10.254 dev eno1

# 100.120.40.0/24 대역을 eno1 경유로 설정
sudo ip route add 100.120.40.0/24 via 100.80.10.254 dev eno1

 

위의 명령어로 라우팅 테이블을 추가한 뒤 확인을 위해 아래의 명령어를 입력한다.

ip route get 10.13.1.221
ip route get 10.100.200.10
ip route get 10.12.4.10

 

반환되는 출력이 via 10.8.1.254 dev eno1 이라면 의도한 대로 네트워크 인터페이스 eno1 로 패킷이 가도 동작하는 것이다.


4. 재부팅 후에도 적용되도록 설정하기

라우트는 ip route add만 하면 일시적이다.
서버를 재부팅하면 다시 사라지므로 영구 설정이 필요하다.

 

5-1. Debian 계열 (Ubuntu 등)

 

Debian/Ubuntu에서는 /etc/netplan/ 혹은 /etc/network/interfaces 파일에 라우트를 정의한다.
예시 (netplan 사용 시 /etc/netplan/01-netcfg.yaml)

network:
  version: 2
  ethernets:
    eno1:
      addresses:
        - 100.80.10.200/24
      routes:
        - to: 100.130.0.0/23
          via: 100.80.10.254
        - to: 100.130.20.0/23
          via: 100.80.10.254
        - to: 100.100.200.0/24
          via: 100.80.10.254
        - to: 100.120.40.0/24
          via: 100.80.10.254

#적용
sudo netplan apply

 

 

 

5-2. RHEL 계열 (Rocky Linux 9.5 등)

 

RHEL 9 계열은 NetworkManager 기반이므로 nmcli로 라우트를 추가한다.

sudo nmcli connection modify eno1 +ipv4.routes "100.130.0.0/23 100.80.10.254"
sudo nmcli connection modify eno1 +ipv4.routes "100.130.20.0/23 100.80.10.254"
sudo nmcli connection modify eno1 +ipv4.routes "100.100.200.0/24 100.80.10.254"
sudo nmcli connection modify eno1 +ipv4.routes "100.120.40.0/24 100.80.10.254"

# 적용
sudo nmcli connection up eno1

 

이렇게 하면 서버가 재부팅되더라도 라우팅 설정이 유지된다.

 

마무리

다중 NIC 환경에서는 서버가 어떤 대역의 IP로 어떤 인터페이스를 통해 나가야 하는지 명확히 지정하지 않으면 원하는 통신이 안 되는 경우가 많다. 이번 실습을 통해 라우팅 테이블을 직접 관리하고, 영구적으로 적용하는 방법을 정리할 수 있었다.