- 참고 : 네트워크 실습은 현재 CentOS(레드햇 계열) 7에서 하고있음
- 참고 2 : 이전 글 (Lagacy 방법) 을 따라했다면, 기존의 rule-, route- 파일을 삭제하고, ifcfg 파일의 NM_CONTROLLED를 yes, 혹은 아예 지워야 아래의 실습을 진행할 수 있음
0. 참고
약어
nmcli connection modify- 이 위에 명령어가 진짜 많이 쓰이는데, 이게 아래랑 내용이 같음
nmcli con mod- 그러니 이 밑에서부터는 con, mod 로 씀
레거시 방법과 다른 점
- 제일 중요한건데, 레거시와 다르게 NM은 한 번 내렸다가 올려야지 됨
nmcli con down <인터페이스명>
nmcli con up <인터페이스명>- 그리고 무조건 prefix(IP 뒤에 붙는 /)를 써줘야됨
- 예시
nmcli con mod enp0s1 \
+ipv4.routes 8.8.8.8/32 192.168.64.1 ...- 레거시에서는 특정 하나의 아이피만으로 가는거면 prefix를 안써도 됐는데, NM은 써줘야함!
1. 라우팅 테이블
0) 라우팅 테이블 확인하기
ip route show table <테이블명>- 현재 설정된 라우팅 테이블을 볼 수 있음
1) 라우팅 테이블에서 특정 라우팅을 삭제하기
nmcli con mod <인터페이스명> \
-ipv4.routes "<목적지> <다음홉(게이트웨이)> <metric> table=<테이블명>"-
이 때 ipv4.routes 뒤에 붙는 요소는 정확해야 함
-
예시
nmcli con mod System enp0s1 \
-ipv4.routes "8.8.8.8/32 192.168.64.1 100 table=100"- 그리고, 기본값을 지우는 방법이 레거시랑은 조금 다름
- 자동으로 추가된 기본값을 지우는 방법
nmcli con mod <인터페이스명> \
-ipv4.gateway2) 라우팅 테이블에 특정 라우팅을 추가하기
nmcli con mod <인터페이스명> \
+ipv4.routes "<목적지> <다음홉(게이트웨이)> <metric> table=<테이블명>"- 삭제는 마이너스, 추가는 플러스
게이트웨이 라우팅 추가
nmcli con mod <인터페이스명> +ipv4.gateway <게이트웨이_주소>- 예시
nmcli con mod enp0s1 +ipv4.gateway 192.168.64.1- 아마 제대로 됐다면 외부 IP에 핑 날렸을 때 제대로 갈거임
특정 대역 라우팅 추가
- 이번에는 게이트웨이 말고 특정 대역에 대해 라우팅을 추가해 볼 것임
- 기본형은 위에 써놨으니 바로 예시 드감
nmcli con mod enp0s1 \
+ipv4.routes "8.8.8.8/32 192.168.64.5"- 제대로 추가된 걸 볼 수 있음

- 그리고 ip route get 을 사용하면 어떤 라우팅을 사용하는지 알 수 있음

라우팅 테이블 변경
- 라우팅 테이블을 만들때, 특정 명령어는 따로 없음
- 라우팅을 추가할 때 테이블을 지정한다면 그 때 추가된걸로 인지함
nmcli con mod <인터페이스명> \
+ipv4.routes "<목적지> <다음홉(게이트웨이)> <metric> table=<테이블명>"- 예시
nmcli con mod enp0s1 \
+ipv4.routes "8.8.8.8/32 192.168.64.5 table=100"- 잘 추가가 됨

-
이 뒤에 ip route show table 100으로 확인해 보면…

-
100번 테이블에 추가된 걸 볼 수 있음
3) 같은 목적지를 가진 여러 개의 라우팅을 metric으로 관리
nmcli con mod <인터페이스명> \
+ipv4.routes "<목적지> <다음홉(게이트웨이)> <metric> table=<테이블명>"- 여기서는 예시로 8.8.8.8/32 로 가는 패킷에 대해 192.168.64.6로 나가도록 + metric 200으로 설정해 보았음
nmcli con mod enp0s1 \
+ipv4.routes "8.8.8.8/32 192.168.64.6 200"- 잘 추가가 됨

- 그러나 외부 IP로 통신을 시도하면 아까 전에 만든게 작동함.

- 왜냐면 우리가 metric (200)으로 우선순위를 미뤄놨기 때문임
2. 라우팅 룰 (규칙)
0) 라우팅 룰 확인하기
- NetworkManager에서는 nmcli con show 안에 ipv4.routing-rules 라는 키로 같이 들어있음

- 근데 nmcli con show 하면 너무 많은게 출력되니까 파이프라인 이용하면 좋음
nmcli con show <인터페이스명> | grep ipv4.routing-rules- 예시
nmcli con show enp0s1 | grep ipv4.routing-rules1) 라우팅 룰 생성하기
nmcli con mod <인터페이스명> \
+ipv4.routing-rules "priority <우선순위> from <출발지/마스크> table <테이블명>"- 예시
- 여기서는 아까 위에서 만들었던 100번 테이블을 추가할 것
nmcli con mod enp0s1 \
+ipv4.routing-rules "priority 100 from 192.168.64.3/32 table 100"- 추가된 것을 볼 수 있음

- ip rule show로 봐도 제대로 추가됨

2) 라우팅 룰 삭제하기
- 라우팅 룰 만들때랑 똑같은데 +ipv4를 -ipv4로 하면 됨
nmcli con mod <인터페이스명> \
-ipv4.routing-rules "priority <우선순위> from <출발지/마스크> table <테이블명>"- 예시
- 여기서는 아까 위에서 만들었던 100번 테이블을 추가할 것
nmcli con mod enp0s1 \
-ipv4.routing-rules "priority 100 from 192.168.64.3/32 table 100"- 룰을 삭제한다고 해서 테이블 자체가 사라지지는 않는거긴 함
- 테이블까지 완전히 지우려면 해당 테이블 안에 있는 라우팅을 다 지우면 됨
- 다 지우고 깔끔하게 캐시까지 지우려면 아래의 명령 (NM은 아니지만) 을 실행
ip route flush cache3. 설정을 영구로 저장하기
- 기본적으로 nmcli con mod로 수정한 내용은 영구저장임
- 다만, 설정을 변경한 후 아래의 명령어를 사용해야 함
nmcli con down <인터페이스명>
nmcli con up <인터페이스명>