- 참고 : 네트워크 실습은 현재 CentOS(레드햇 계열) 7에서 하고있음
1. 라우팅 테이블
0) 라우팅 테이블 확인하기
ip route show table <테이블명>- 현재 설정된 라우팅 테이블을 볼 수 있음
1) 라우팅 테이블에서 특정 라우팅을 삭제하기
ip route del <경로>- 이 때 경로는 어떤걸 삭제할지가 확실해야 함
- 예시 1. 192.168.10.0/24 에 관한 라우팅이 하나 뿐이면, 아래와 같이 쓰면 됨
ip route del 192.168.10.0/24- 예시 2. 192.168.10.0/24 에 관한 라우팅이 두개면 (다음 홉이 다름), 아래와 같이 쓰면 됨
ip route del 192.168.10.0/24 via 192.168.10.1 dev eth0- 여기서는 기본 라우팅을 삭제하고 테스트 해볼 예정임
ip route del default
-
default가 사라진걸 볼 수 있음
-
이 상태에서 외부 ip로 접근하려고 하면 아마 안될것임. ping으로 테스트 해보면 아래의 결과가 나옴

- 안되는게 정상임
2) 라우팅 테이블에 특정 라우팅을 추가하기
ip route add <경로>-
삭제와 비슷한데 del이 add가 됨
-
당연한 얘기지만, 추가할 때에는 삭제할 때와 다르게 자세하게 조건을 써야 함
-
여기서는 위에서 삭제한 기본 라우팅을 다시 복구해 볼 예정임
기본 라우팅 추가
ip route add default via 192.168.64.1 dev enp0s1
- 아마 제대로 됐다면 외부 IP에 핑 날렸을 때 위와 같이 제대로 갈거임
특정 대역 라우팅 추가
- 이번에는 default 말고 특정 대역에 대해 라우팅을 추가해 볼 것임
ip route add 20.20.0.0/16 via 192.168.0.1 dev enp0s1- 제대로 추가된 걸 볼 수 있음

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

- 20.20.0.2 는 20.20.0.0/16 에 포함되기 때문에, 위에서 만들었던 20.20.0.0/16에 대한 라우팅에 포함되어 적용됨
라우팅 테이블 변경
- 라우팅 테이블을 만들때, 특정 명령어는 따로 없음
- 라우팅을 추가할 때 테이블을 지정한다면 그 때 추가된걸로 인지함
ip route add <경로> table <테이블번호>- 예시
ip route add 8.8.8.8 via 192.169.64.254 dev enp0s1 table 100- 이 뒤에 ip route show table 100으로 확인해 보면…

- 100번 테이블에 추가된 걸 볼 수 있음
3) 같은 목적지를 가진 여러 개의 라우팅을 metric으로 관리
ip route add <경로> meric <비용>- 여기서는 예시로 default 를 다음 홉과 비용을 다르게 만들었음
ip route add default via 192.168.64.254 dev enp0s1 metric 200- 잘 추가가 됨

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

- 왜냐면 우리가 metric (200)으로 우선순위를 미뤄놨기 때문임
2. 라우팅 룰 (규칙)
0) 라우팅 룰 확인하기
- 모든 규칙을 볼 때
ip rule show- 특정 테이블을 보라고 하는 규칙만 골라서 볼 때
ip rule show table <테이블_번호>- 예시
ip rule show table main
ip rule show table 1001) 라우팅 룰 생성하기
ip rule add from <출발지_IP> lookup <테이블_번호>- 예시
- 여기서는 아까 위에서 만들었던 100번 테이블을 추가할 것
ip rule add from 192.168.64.254 lookup 100- 추가된 것을 볼 수 있음

- 잠깐 현재 상황을 그림으로 표현해봄

- 이 상태에서 8.8.8.8로 내 아이피로 보냄 vs 192.168.64.254 로 보냄 해보면

- 내 아이피로 보내면 잘 가고, .254 로 하면 도착 안한다는걸 알 수 있음
- 왜냐? 내 아이피로 보내면 일단 main table을 확인해서 보내기 때문임
- .254를 from으로 하면 100 table을 확인하는데, 다음 홉을 192.168.64.254로 해놨음
- 근데 .254가 지금 게이트웨이가 아니기 때문에 당연히 다음 홉으로 가봤자 8.8.8.8에 안닿음
2) 라우팅 룰 삭제하기
- 라우팅 테이블에서 라우팅 지울 때랑 마찬가지임. 하나가 특정되게끔 확실하게 쓰면 됨
ip rule del <경로>- 예시
ip rule del from 192.168.64.254 lookup 100- 룰을 삭제한다고 해서 테이블 자체가 사라지지는 않는거긴 함
- 테이블까지 완전히 지우려면 해당 테이블 안에 있는 라우팅을 다 지우면 됨
- 다 지우고 깔끔하게 캐시까지 지우려면 아래의 명령을 실행
ip route flush cache3. 설정을 영구로 저장하기
- 기본적으로 ip route로 작성한 내용은 영구 저장이 아니고 이번 부팅 때만 사용됨
- 영구적으로 저장하기 위해서는 파일을 수정해야 함
1) IP / 게이트웨이 설정
- 설정 확인하기
cat /etc/sysconfig/network-scripts/ifcfg-<네트워크_인터페이스_이름>
- 혹시 모르니까 기존 ip랑 동일한 ip로 고정 설정을 해볼 예정

-
현재 ip : 192.168.64.3
-
게이트웨이 : 192.168.64.1
-
설정 파일 밑에다가 아래의 내용 추가
IPADDR=192.168.64.3
PREFIX=24
GATEWAY=192.168.64.1
DNS1=8.8.8.8- 저장한 후의 아래 명령어 실행
nmcli connection reload
nmcli connection down <네트워크_인터페이스_이름>
nmcli connection up <네트워크_인터페이스_이름>- 예시
nmcli connection reload
nmcli connection down enp0s1
nmcli connection up enp0s1
2) 라우팅 테이블 설정
라우팅 테이블 이름 등록
-
라우팅 테이블 alias (별명) 을 등록해주는 테이블
-
위치 : /etc/iproute2/rt_tables
-
예시 : 100 번 테이블을 table100 으로 저장
vi /etc/iproute2/rt_tables
...
100 table100- 저장하기
라우팅 테이블 작성
-
위치 : /etc/sysconfig/network-scripts/route-<네트워크_인터페이스_이름>
-
예시
vi /etc/sysconfig/network-scripts/route-enp0s1
default via 192.168.64.1 dev enp0s1 table table100 # 아까 만든 라우팅 테이블 별명에서 알아서 변환라우팅 규칙
-
위치 : /etc/sysconfig/network-scripts/rule-<네트워크_인터페이스_이름>
-
예시
vi /etc/sysconfig/network-scripts/rule-enp0s1
from 192.168.64.10/32 table table100 priority 1000적용
- networkmanager를 재실행하면 됨
systemctl restart NetworkManager4) 설정 점검
ip rule show
ip route show table table100
ip route get 8.8.8.8 from 192.168.64.10-
규칙 > 테이블 > 라우팅 순으로 확인
-
나는 이대로 하니까 안됐음…
NetworkManager가 인터페이스를 못잡게 하는 법
- 내 경우는 rule과 routing table이 싸그리 무시됐었음
- Network Manager가 인터페이스를 잡고있는 경우에는 …/network-scripts 폴더에 rule-*, route-* 파일을 안읽는다고 함
- /etc/sysconfig/network-scripts/ifcfg-<인터페이스_이름> 에다가 아래의 내용 추가
NM_CONTROLLED=no- 그리고 NetworkManager랑 network 서비스 재시작하면 해결됨