• 참고 : 네트워크 실습은 현재 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.gateway

2) 라우팅 테이블에 특정 라우팅을 추가하기

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-rules

1) 라우팅 룰 생성하기

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 cache

3. 설정을 영구로 저장하기

  • 기본적으로 nmcli con mod로 수정한 내용은 영구저장임
  • 다만, 설정을 변경한 후 아래의 명령어를 사용해야 함
nmcli con down <인터페이스>
nmcli con up <인터페이스>