연구실에서 10G 네트워크와 1G 네트워크를 동시에 이용한다.
외부 패키지를 다운받을 때는 1G를 이용해서 외부망을 통해 다운받아주고,
실험을 진행해야 할 때는 10G를 이용한다.
나의 환경에서는 10G 네트워크는 외부로는 돌지 않고, 서버들 끼리 묶어주는 용도로 이용한다.
이때 분명 두 네트워크 모두 UP을 시켜줬음에도 불구하고, 어떤 서버는 구글 DNS에 ping을 날려보면
Destination Host Unreachable이 뜨고, 또 어떤 서버는 제대로 ping이 날라간다.
# 구글 DNS에 Ping 날려보기
ping 8.8.8.8
이는 'From 10.0.0.13' 에서 볼 수 있듯이 현재 Ping을 쏴주는 네트워크 인터페이스가 1G가 아닌 10G로 잡혀 있기 때문에 외부와 통신이 되고 있지 않은 것이다.
그러니 당연히 패킷이 제대로 전달되지 않는 것이다.
그렇다면 1G, 10G 둘 다 UP을 시켜줬는데 왜 10G로 처음부터 잡히는 것일까?
애초에 1G를 먼저 잡아주고 싶다면 두 네트워크의 우선순위를 변경해주어야 한다.
우선순위와 Metric 값은 여기서 동일한 의미로 쓰인다.
결론부터 말하자면 라우팅테이블 상에 있는 Metric 값을 확인하고, 이를 변경해주면 되는 것이다.
우선순위가 높은 것은 작은 Metric 값을 갖는 것이다.
라우팅테이블을 확인하는 방법은 간단하다.
# 라우팅테이블
route
나의 환경에서 봤을 때의 라우팅테이블이다.
enp5s0f0이 10G 네트워크 인터페이스명이고, eno1이 1G 네트워크 인터페이스명이다.
여기서 Metric 값을 보면 10G 네트워크인 enp5s0f0가 eno1보다 Metric이 작은 것을 알 수 있다.
즉 현재 시스템에서 10G 네트워크가 1G보다 더 높은 우선순위를 갖고 있는 것이다.
그랬기 때문에 10G가 먼저 잡혔고, 그 상태에서 Ping을 날라면 전달이 되지 않았던 것이다.
따라서 1G가 10G보다 우선하여 바로 잡힐 수 있도록 Metric 값을 더 작게 수정해주면 된다.
현재 두 네트워크가 Default로 잡혀있으므로 이럴땐 아래 명령어를 입력해준다.
그전에 내 환경은 Centos 8 버전을 이용중이다.
따라서 네트워크 관리도구는 nmcli를 이용한다.
# default로 되어 있는 경우
nmcli connection modify 인터페이스 이름 ipv4.route-metric 새로운 metric 값
만약 Default로 지정되어 있지 않다면 아래 명령어도 작동할 것이다.
nmcli connection modify 인터페이스 이름 connection.autoconnect-priority 새로운 metric 값
이후 네트워크를 내리고 올렸다가 다시 시작해주면 된다
명령어는 아래와 같다.
# Down -> Up
nmcli con down eno1
nmcli con up eno1
# 재시작
systemctl restart NetworkManager
이렇게 진행해주면 아래와 같이 성공적으로 두 네트워크 우선순위가 바뀌어 있는 것을 볼 수 있다.
그 후 당연히 핑도 잘 돌아가는 것을 볼 수 있을 것이다.