/* 해당 포스트는 Ubuntu16.04를 기준으로 작성합니다 */
"Route table"
이번에는 Route table에 대해서 포스팅을 해보려고 한다.
랜선을 연결하면 자동으로 네트워크가 설정되는 편리함 때문에
수동으로 네트워크를 입맛에 맞게 설정하기가 어색할 수 있다.
특히 리눅스를 처음 설치하고
"연결은 되어 있는데 인터넷이 안되요"
라는 말을 가끔씩 듣는다.
랜선 연결 확인
interface파일 오타 확인
IP 충돌 확인
Route table 확인
대부분의 경우엔 위의 순서대로 확인하면
해결되는 경우가 많다.
그 중에서 Route table을
확인하지 않는 사람들이 많아서 간략하게 설명 해보려고 한다.
먼저, 나는 Network Manager를 사용하지 않는다.
설정 우선순위가 높기 때문에 가끔씩 네트워크 설정을 바꿔버리기 때문이다.
(무선을 많이 이용하거나 네트워크 이동이 많은 경우에는 매우 유용하다.)
sudo apt-get remove -y --purge network-manager
삭제는 위의 명령어를 통해 할 수 있다.
1. Route table 확인하기
hwi@testcom:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp1s0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp1s0
route 명령어를 이용해서
라우팅 테이블을 확인할 수 있다.
자세한 내용을 알고 싶다면 메뉴얼을 보자!
http://manpages.ubuntu.com/manpages/xenial/en/man8/route.8.html
간략하게 설명을 하자면..
Destination: 목적지 네트워크
Gateway: 외부 네트워크와 연결하기 위한 게이트웨이 주소
Genmask: 목적지 네트워크의 넷마스크 주소
Flags: 경로에 대한 정보 (U: 살아있음, H: 목적지가 호스트 주소, G: 게이트웨이를 향하는 경로)
Metric: 목적지 까지의 거리
Ref: 경로를 참조한 횟수
Use: 경로를 탐색한 횟수
Iface: 네트워크 인터페이스
현재 내 네트워크 상태를 위의 테이블을 보고 설명하자면
목적지 네크워크 중에 192.168.0.0 부분은
Genmask가 255.255.255.0이기 때문에
192.168.0.1~192.168.0.254으로 보내는 패킷은 enp1s0로 보낼 수 있다.
그 밖의 주소로 가는 패킷은 어디로 가나?
그렇다
현재 내 컴퓨터는 인터넷이 불가능한 상황이다
대부분의 경우엔 이렇게 default Gateway가
없거나 잘 못 설정되어서 인터넷이 되지 않는다.
2. Route table 수정하기
hwi@testcom:~$ sudo route add default gw 192.168.0.1 hwi@testcom:~$ route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 enp1s0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp1s0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp1s0
route 명령어를 통해서 default 게이트웨이(0.0.0.0)를 추가하였다
n옵션을 주지 않으면 첫 번째 줄에 default라고 표시되는 것을 확인할 수 있다
(게이트웨이는 간단하게 외부로 통하는 통로라고 생각하면 된다)
이제 192.168.0.0 네트워크가 아닌
다른 네트워크로 향하는 패킷은
모두 192.168.0.1을 통해 나갈 수 있게 되었다.
sudo route del default gw 192.168.0.1
삭제하는 명령어는 다음과 같다.
목적지의 이름은 중복이 가능하기 때문에
전부 적어주는 것이 좋다.
3. Route table 저장하기
아쉽지만 route 명령어를 통한
route table 수정은 재부팅을 하면 다시 처음으로 돌아간다
라우팅 테이블을 영구 추가하기 위해서
/etc/network/interfaces 파일에 아래 명령어를 추가해 주자
up route add default gw 192.168.0.1
만약 삭제하고 싶다면 아래 명령어를 추가해 주자
down route del default gw 192.168.0.1
이렇게 하면 재시작 할 때
자동으로 interfaces 파일을 읽으면서 라우팅 테이블이 수정된다
4. Route table 원리
마지막으로 route table이 어떻게 동작하는지 알아보자
패킷 안에는 목적지IP가 포함되어 있는데
192.168.0.5로 패킷을 보낸다고 해보자
서버가 테이블의 맨 처음 행부터 확인하면서
Genmask와 패킷의 목적지IP를 AND연산을 한다.
만약 Genmask가 255.255.255.0이라면
192.168.0.0이 나올 것이다.
그 줄에서 Destination부분이
연산의 결과값과 같다면 해당 네트워크 인터페이스로 보내게 되는 것이다.
'개발 > Linux' 카테고리의 다른 글
우분투 블루투스 스피커 설정 (0) | 2018.09.09 |
---|---|
[Linux] 리눅스 복사&붙여넣기 (2) | 2018.03.06 |
APT 403에러 (0) | 2018.03.06 |
cgroups (1) | 2018.02.19 |
Linux namespace (0) | 2018.02.17 |