Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스(RHEL/CentOS)에서 라우팅 구성하기: ip 명령어 완벽 가이드

이 글에서는 CentOS 리눅스 환경에서 ip 명령어를 사용하여 라우팅을 구성하고 네트워크 라우트를 관리하는 방법을 소개합니다. 라우팅 테이블 조회, 정적 라우트 추가 및 삭제 등 실무에서 바로 활용할 수 있는 내용을 다루며, ip 도구를 제공하는 Red Hat, Fedora 등 다른 리눅스 배포판에도 동일하게 적용할 수 있습니다.

참고로 리눅스에서 라우팅을 관리할 때는 기존의 route 명령어보다 ip 명령어 사용을 권장합니다. route 명령어는 라우팅 정책(routing policy)과 같은 고급 라우팅 기능을 설정할 수 없으며, ip 도구로 설정된 특수 라우팅 설정도 표시하지 못합니다.

리눅스에서 네트워크 라우팅 테이블 확인 방법

현재 시스템의 라우팅 테이블을 출력하려면 다음 명령어를 실행합니다.

# ip route

  • default via 192.168.1.1 dev enp0s3: 이 예제에서 enp0s3 인터페이스를 통해 나가는 기본 게이트웨이입니다. 목적지 IP 주소에 대한 정적 라우트가 라우팅 테이블에 없으면 패킷은 이 기본 경로(default route)를 통해 전송됩니다.
  • 192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201: 192.168.1.0/24 네트워크로 향하는 정적 라우트로, 인터페이스의 192.168.1.201 주소를 통해 통신합니다.
  • proto kernel: 커널이 자동으로 생성한 라우트를 의미합니다(proto static은 관리자가 수동으로 추가한 라우트).
  • metric: 라우트 우선순위를 나타냅니다. 메트릭 값이 작을수록 우선순위가 높습니다. 동일한 메트릭 값을 가진 두 개의 라우트가 존재하면(절대 이렇게 설정하면 안 됩니다!) 커널이 무작위로 라우트를 선택합니다.

특정 IP 주소로 트래픽을 전달할 때 어떤 인터페이스(게이트웨이)가 사용되는지 확인하려면 다음 명령어를 실행합니다.

# ip route get 192.168.2.45

192.168.2.45 via 192.168.1.1 dev enp0s3 src 192.168.1.201

또한, 두 개 이상의 네트워크 인터페이스를 갖춘 리눅스 서버를 라우터나 인터넷 게이트웨이로 활용할 수도 있습니다. 여러 인터페이스 간 패킷 라우팅을 활성화하려면 커널 파라미터인 net.ipv4.ip_forward = 1을 설정해야 합니다.

리눅스에서 정적 라우트 추가 및 삭제하기

라우팅 테이블에 특정 IP 네트워크로 가는 새로운 라우트를 추가하려면 다음 명령어를 실행합니다.

# ip route add 192.168.0.0/24 via 192.168.1.1

이렇게 하면 192.168.0.0/24 네트워크로 가는 경로가 게이트웨이 192.168.1.1을 통해 추가됩니다.

ip route 명령어의 문법은 Cisco IOS 문법과 매우 유사합니다. 축약형도 사용할 수 있는데, 예를 들어 ip route add 대신 ip pro ad처럼 입력해도 됩니다.

단일 IP 주소(호스트)에 대한 개별 정적 라우트도 추가할 수 있습니다.

# ip route add 192.168.1.0 via 192.168.1.1

Cisco의 ip route null0와 유사하게 null 라우트(blackhole)도 생성할 수 있습니다. 이 네트워크로 전송되는 패킷은 'No route to host' 오류와 함께 폐기됩니다.

# ip route add blackhole 10.1.20.0/24

이 방법으로 추가한 라우트는 임시 라우트로서, 네트워크 서비스 또는 서버를 재시작하면 사라집니다.

수동으로 생성한 정적 라우트를 삭제하려면 다음 명령어를 실행합니다.

# ip route del 192.168.0.0/24

실행 결과, 해당 라우트가 리눅스 라우팅 테이블에서 제거된 것을 확인할 수 있습니다.

영구적인(Persistent) 정적 라우트 설정

재부팅 후에도 유지되는 영구 라우트를 추가하려면 라우트 설정 파일을 생성하거나, 호스트 시작 시 실행되는 rc.local 파일에 규칙을 추가해야 합니다.

영구 정적 라우트를 추가하려면 먼저 라우팅에 사용할 네트워크 인터페이스 이름이 필요합니다. 다음 명령어로 인터페이스 이름을 확인할 수 있습니다.

# ip a

이 예제에서는 enp0s3입니다. RHEL/CentOS 리눅스에서 네트워크 인터페이스를 구성하는 방법에 대한 별도의 상세 가이드도 참고하시기 바랍니다.

그다음 아래 파일을 엽니다.

# nano /etc/sysconfig/network-scripts/route-enp0s3

파일에 라우트 정보를 담은 한 줄을 추가합니다.

192.168.0.0/24 via 192.168.1.1

라우트를 파일에 추가한 후에는 network 서비스를 재시작합니다.

# service network restart

네트워크 재시작이 완료되면 정적 라우트가 라우팅 테이블에 반영된 것을 확인할 수 있습니다.

또 다른 방법으로, rc.local 파일에 라우트 추가 명령어를 입력하면 서버 부팅 시 정적 라우트가 자동으로 등록됩니다. 파일을 열고,

# nano /etc/rc.local

정적 라우트를 추가하는 명령어를 입력합니다.

# ip route add 192.168.0.0/24 via 192.168.1.1

이후 서버를 재시작하면 시스템 부팅 과정에서 라우트가 자동으로 추가됩니다.

리눅스에서 기존 라우트 항목 수정하기

기존에 등록된 라우트를 변경하려면 ip route replace 명령어를 사용합니다.

# ip route replace 192.168.0.0/24 via 192.168.1.1

라우팅 테이블의 모든 임시 라우트를 초기화하려면 네트워크 서비스를 재시작하면 됩니다.

# service network restart

Restarting network (via systemctl): [ OK ]

# ip route

default via 192.168.1.1 dev enp0s3 proto static metric 100
192.168.0.0/24 via 192.168.1.1 dev enp0s3 proto static metric 100
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.201 metric 100

리눅스에서 기본 라우트(기본 게이트웨이) 변경 방법

기본 라우트는 ip route del 명령어로 삭제할 수 있습니다.

# ip route del default via 192.168.1.1 dev enp0s3

새로운 기본 라우트를 설정하려면 CentOS/RHEL 리눅스에서 다음 명령어를 사용합니다.

# ip route add default via 192.168.1.2 (게이트웨이 IP 주소 지정)

# ip route add default via enp0s3 (디바이스 이름으로 지정)

기존 기본 라우트 설정을 변경하려면 아래 명령어를 사용합니다.

# ip route replace default via 192.168.1.2