리눅스에서 ip 명령어로 IP 설정하는 방법

RHEL/CentOS 7.0 버전이 공개되면서 net-tools가 최소 설치에 빠지게 되어 (Network Manager 사용을 권장하는 취지인 듯) 약간 혼란스런 부분이 생겼다. 기존에 잘 사용하던 ifconfig, netstat, route, arp 등의 명령어를 사용하려면 net-tools 패키지를 추가로 설치해야 한다.

사실 다른건 몰라도 netstat 명령어는 시스템 엔지니어에게 필수 아닌가? 새로운 기술이 등장하면 적응해야 하는게 엔지니어의 숙명이긴 하다만, 굳이 net-tools를 의도적으로 제외한 부분은 쉽게 납득되지 않았다.

어쨌든 ip 명령어로 IP를 설정하는 방법에 대해 알아보자. 물론 RHEL/CentOS 계열에서는 보통 아래 파일을 수정한 후 ifdown / ifup 또는 service network restart를 할 것이다.

/etc/sysconfig/network-scripts/ifcfg-eth0

하지만 긴급 상황이거나 임시로 IP를 추가할 경우도 있으므로, ip 명령어에 대해 알아두는게 좋겠다.

1. IP 추가하는 방법

아래와 같이 입력하면 된다.

ip addr add 192.168.0.101/24 dev eth0

어떤가? 매우 간단하다. /PREFIX 붙이고 device를(보통 eth0) 지정하면 끝이다. (PREFIX를 지정 안 하면 기본 /32)

ip a a 192.168.0.101/24 dev eth0

위 명령어는 첫번째 명령어와 동일한 결과를 가져다준다. ip 명령어는 대부분의 커맨드를 한 글자로만 써도 잘 동작한다. 그래서 타이핑을 줄여줘서 편하다. 다만 모르는 사람에게는 가독성이 떨어진다는 단점이 있다.

동일한 작업을 ifconfig로 해볼까? 사실 이게 더 간단하기는 하다.

ifconfig eth0 192.168.0.101/24

참고로 IP를 추가했는데도 통신이 안 되는 경우 링크가 down 상태일 수 있으니 up 시켜줘야 한다.
ip 명령어와 ifconfig 명령어 각각 아래와 같다.

ip link set eth0 up
ip l s eth0 up (위 명령어 줄임 버전)

ifconfig eth0 up

그리고 ifconfig의 경우 애초에 IP를 추가할 때 뒤에 up을 붙여주면 한방에 해결이 된다.

ifconfig eth0 192.168.0.101/24 up

2. 라우팅 추가하는 방법

첫번째 단계에서는 IP만 추가하였다. 하지만 현재 상태로는 Default Gateway가 없어서 외부 Network와 통신할 수 없다. (동일 Network내 L2 통신만 가능)

따라서 아래와 같이 Default Gateway를 지정해보자.

ip route add default via 192.168.0.1
ip route add 0.0.0.0/0 via 192.168.0.1

위 명령어는 동일하다. default로 써도 되고 0.0.0.0/0으로 표현해도 된다.
마찬가지로 줄여서 써도 무방하다.

ip r a default via 192.168.0.1
ip r a 0.0.0.0/0 via 192.168.0.1

기존에 익숙하게 사용하고 있던 route 명령어로는 아래와 같다.

route add default gw 192.168.0.1
route add -net 0.0.0.0 gw 192.168.0.1

위 명령어는 동일하다. default로 써도 되고 0.0.0.0으로 표현해도 된다.