리눅스 ip 명령어 사용 예
ip 명령어는 기존의 ifconfig, route, arp 등의 명령을 대체하며, 사용법은 아래와 같다.
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help } ip [ -force ] -batch filename where OBJECT := { link | address | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm | netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila | vrf } OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } | -4 | -6 | -I | -D | -B | -0 | -l[oops] { maximum-addr-flush-attempts } | -br[ief] | -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] | -rc[vbuf] [size] | -n[etns] name | -a[ll] | -c[olor]}
ip 명령어 뒤의 OBJECT는 전체 단어 대신 줄여서 사용할 수도 있다.
1. NIC(Network Interface Card, 랜카드) 및 연결 상태 확인.
기본적으로 ip link show 명령을 사용한다. 여기서 show는 생략가능하며 link는 줄여여 ‘l’ 만 사용해도 된다.
[root@localhost ~]# ip li show 1: lo:mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens32: mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT group default qlen 1000 link/ether 00:50:56:9d:da:8e brd ff:ff:ff:ff:ff:ff 3: ens33: mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT group default qlen 1000 link/ether 00:50:56:9d:da:8e brd ff:ff:ff:ff:ff:ff 4: bond0: mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether 00:50:56:9d:da:8e brd ff:ff:ff:ff:ff:ff
위에서 loopback 을 제외한 ens32, ens33 두개의 NIC을 볼 수 있으며 모두 UP 상태임 을 확인 할 수 있다.
-brief 옵션을 주어 간단하게 볼 수도 있다.
[root@localhost ~]# ip -br link lo UNKNOWN 00:00:00:00:00:00ens32 UP 00:50:56:9d:da:8e ens33 UP 00:50:56:9d:da:8e bond0 UP 00:50:56:9d:da:8e
뒤에 NIC을 지정하면 해당 NIC에 관한 내용만 확인 할 수 있다.
ens32의 link 통계를 보려면, ip -s link show ens32 명령을 내리면 된다. 여기서 show는 생략하면 안된다.
[root@localhost ~]# ip -s link ens32 Command "ens32" is unknown, try "ip link help". [root@localhost ~]# ip -s link show ens32 2: ens32:mtu 1500 qdisc pfifo_fast master bond0 state UP mode DEFAULT group default qlen 1000 link/ether 00:50:56:9d:da:8e brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 1088546 15601 0 0 0 0 TX: bytes packets errors dropped carrier collsns 0 0 0 0 0 0
[root@localhost ~]# ip -br link show ens32 ens32 UP 00:50:56:9d:da:8e
2. 연결(link) 설정.
유선 연결의 경우 물리적으로 케이블을 제거하지 않고도 연결을 끊거나 다시 연결할 수 있다.
위에서 확인한 link 중에서 ens32의 연결을 끊어 본다.
[root@localhost ~]# ip link set ens32 down
연결을 확인 해 보면, ens32가 down 상태인 것을 볼 수 있다.
[root@localhost ~]# ip -br link lo UNKNOWN 00:00:00:00:00:00ens32 DOWN 00:50:56:9d:da:8e ens33 UP 00:50:56:9d:da:8e bond0 UP 00:50:56:9d:da:8e
다시 연결하고 확인 해 보면 아래와 같은 결과를 볼 수 있다.
[root@localhost ~]# ip link set ens32 up [root@localhost ~]# ip -br link show dev ens32 ens32 UP 00:50:56:9d:da:8e
3. 라우팅 정보 확인 및 라우팅 추가 삭제.
ip route 명령어로 라우팅 정보를 확인 할 수 있다.
[root@localhost ~]# ip route default via 172.16.96.1 dev bond0 proto static metric 300 172.16.96.0/24 dev bond0 proto kernel scope link src 172.16.96.223 metric 300
라우팅 추가/삭제.
NIC를 하나 더 추가(ens35)하고 ip 주소(192.168.1.1)를 설정했다.
라우팅 확인해 보면,
[root@localhost ~]# ip route default via 172.16.96.1 dev bond0 proto static metric 300 172.16.96.0/24 dev bond0 proto kernel scope link src 172.16.96.223 metric 300 192.168.1.0/24 dev ens35 proto kernel scope link src 192.168.1.1
이제, 192.168.10.0/24 네트워크를 192.168.1.1로 라우팅되도록 라우팅을 추가하려면,
[root@localhost ~]# ip route add 192.168.10.0/24 via 192.168.1.1 dev ens35
맨 마지막줄에 위에서 추가한 라우팅 정보를 확인 할 수 있다.
[root@localhost ~]# ip route default via 172.16.96.1 dev bond0 proto static metric 300 172.16.96.0/24 dev bond0 proto kernel scope link src 172.16.96.223 metric 300 192.168.1.0/24 dev ens35 proto kernel scope link src 192.168.1.1 192.168.10.0/24 via 192.168.1.1 dev ens35
라우팅 삭제는 add 대신 del을 사용하면 된다. 삭제 후 확인해 보면 아래와 같다.
[root@localhost ~]# ip route del 192.168.10.0/24 via 192.168.1.1 dev ens35 [root@localhost ~]# ip route default via 172.16.96.1 dev bond0 proto static metric 300 172.16.96.0/24 dev bond0 proto kernel scope link src 172.16.96.223 metric 300 192.168.1.0/24 dev ens35 proto kernel scope link src 192.168.1.1
4. ARP 정보 보기
기존에는 arp 명령어로 ARP 정보를 확인할 수 있었지만, 이제는 ip neigh 명령으로 확인 할 수 있다.
[root@localhost ~]# ip -br neigh 172.16.96.47 dev bond0 lladdr 00:0c:29:f2:0f:0b REACHABLE 172.16.96.2 dev bond0 lladdr a0:ec:f9:2e:c9:e9 STALE 172.16.96.1 dev bond0 lladdr 00:10:f3:9d:90:bd DELAY 172.16.96.121 dev bond0 FAILED
PERMAMENT: 영구적으로 등록된 ARP. 관리 명령어로만 제거 가능함.
NOARP: ARP 항목이 유효함. 유효함을 검증하지는 않지만 기간이 지나면 제거될 항목.
RECHABLE: ARP 항목의 도달 시간이 만료될 때까지 유효함.
STALE: ARP항목이 유효하지만 의심스러운 상태. ARP 상태가 유효하고 ip neigh 명령으로 변경하지 않은 경우에는 ARP 상태를 변경하지 않음.
NONE: ARP 항목이 처음 만들어질 때나 제거하려고 할 때 사용되는 의사(pseudo)상태.
INCOMPLETE: ARP 항목이 검증되거나 결정되지 않았음.
DELAY: ARP 항목 검증이 지연되는 상태.
PROBE: ARP 항목을 검색중인 상태.
FAILED: 최대 검색수를 초과하여 ARP 유효성 검사에 실패함.
수동으로 arp 테이블을 등록하거나 삭제 할 수도 있다. 위에서 FAILED 인 항목을 삭제해 본다.
[root@localhost ~]# ip neigh del 172.16.96.121 dev bond0 [root@localhost ~]# ip neigh 172.16.96.47 dev bond0 lladdr 00:0c:29:f2:0f:0b STALE 172.16.96.2 dev bond0 lladdr a0:ec:f9:2e:c9:e9 STALE 172.16.96.1 dev bond0 lladdr 00:10:f3:9d:90:bd DELAY
ARP 캐시 테이블 삭제하려면 flush 를 사용한다.
[root@localhost ~]# ip neigh flush dev bond0 [root@localhost ~]# ip neigh 172.16.96.1 dev bond0 lladdr 00:10:f3:9d:90:bd REACHABLE
5. NIC에 할당된 ip 주소 확인
아래 명령에서 show는 생략 가능하다.
[root@localhost ~]# ip addr show 1: lo:mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens32: mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000 link/ether 00:50:56:9d:da:8e brd ff:ff:ff:ff:ff:ff 3: ens33: mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000 link/ether 00:50:56:9d:da:8e brd ff:ff:ff:ff:ff:ff 4: ens35: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:50:56:9d:de:ad brd ff:ff:ff:ff:ff:ff 5: bond0: mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:50:56:9d:da:8e brd ff:ff:ff:ff:ff:ff inet 172.16.96.223/24 brd 172.16.96.255 scope global noprefixroute bond0 valid_lft forever preferred_lft forever inet6 fe80::250:56ff:fe9d:da8e/64 scope link valid_lft forever preferred_lft forever
간단하게 보려면, -br 옵션을 준다.
[root@localhost ~]# ip -br addr lo UNKNOWN 127.0.0.1/8 ::1/128 ens32 UP ens33 UP ens35 UP bond0 UP 172.16.96.223/24 fe80::250:56ff:fe9d:da8e/64
ens32, ens33은 bond0에 본딩되어 있다. 아무 설정 없는 ens35에 IP 주소 설정하려면,
[root@localhost ~]# ip addr add 192.168.1.1/24 dev ens35
이제, 설정된 ip 주소를 확인한다. ens35만 확인해 보자.
[root@localhost ~]# ip addr show dev ens35
4: ens35:mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:50:56:9d:de:ad brd ff:ff:ff:ff:ff:ff inet 192.168.1.1/24 scope global ens35 valid_lft forever preferred_lft forever
ip 주소 삭제는 add 대신 del을 사용한다.
[root@localhost ~]# ip addr del 192.168.1.1/24 dev ens35 [root@localhost ~]# ip addr show dev ens35 4: ens35:mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:50:56:9d:de:ad brd ff:ff:ff:ff:ff:ff