서버 장비에는 기본적으로 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로 어떤 인터페이스를 통해 나가야 하는지 명확히 지정하지 않으면 원하는 통신이 안 되는 경우가 많다. 이번 실습을 통해 라우팅 테이블을 직접 관리하고, 영구적으로 적용하는 방법을 정리할 수 있었다.
'CS 공부 > 기타' 카테고리의 다른 글
| [ETC] 트래픽 흐름에 대해서 알아보기 (0) | 2025.09.04 |
|---|---|
| [ETC] 방화벽에 대해 자세히 알아보자 (0) | 2025.09.03 |
| [ETC] UDP 가 Session 을 유지하면 TCP 나 다름없을까? (0) | 2025.09.01 |
| [ETC] 카프카 properties 파일 세부 분석 (3) | 2025.08.28 |
| [ETC] ESXi란 무엇인가? (0) | 2025.08.26 |