기본 유틸리티를 사용하여 현재 네트워크 설정을 테스트 및 확인을 진행하였다.
IP 명령 사용 방법
ip 명령어는 ifconfig 명령어를 사용할 수 없는 최소 설치 버전에서도 내장되어 있는 명령어이다.
ip 명령의 구문은 다음과 같다.
ip [OPTIONS] OBJECT {COMMAND | help}
OBJECT는 관리할 개체 유형이다. 자주 사용되는 개체는 다음과 같다.
link (l) = 네트워크 인터페이스 표시/수정
address (a) = IP 주소를 표시/수정
route (r) = 라우팅 테이블을 표시/수정
Neigh(n) = 인접 개체를 표시/조작(ARP 테이블)
객체는 전체 혹은 약어(짧은) 형태로 작성할 수 있다.
(각 객체에 대한 명령, 목록등을 표시하러면 IP OBJECT 도움말을 입력한다.)
네트워크 인터페이스를 구성할 때는 root 혹은 sudo 권한을 가진 사용자로 실행해야 한다.
또한 ip 명령을 사용하여 설정된 구성은 영구적이지 않다. 시스템을 재부팅하면 모든 변경 사항이 손실되며
영구적으로 변경하러면 디스트로별 구성 파일을 편집하거나 명령을 시작 스크립트에 추가해야 한다.
IP 주소 표시
ip addr [COMMAND] ADDRESS dev IFNAME
addr 개체에서 가장 자주 사용되는 commands는 show, add, del 이다.
# ip 명령어의 구문 해석
$ ip address show ens192
2: ens192: <BROADCAST,MULTICAST,**UP**,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
**link**/ether 00:0c:29:c8:fe:5e brd ff:ff:ff:ff:ff:ff
altname enp11s0
**inet** 172.16.0.178/24 brd **172.16.0.255** scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet 172.16.0.148/24 brd 172.16.0.255 scope global secondary dynamic noprefixroute ens192 valid_lft 72514sec preferred_lft 72514sec
**inet6** fe80::20c:29ff:fec8:fe5e/64 scope **link** noprefixroute
valid_lft forever preferred_lft forever
**UP >** 활성 인터페이스
**link >** 장치의 하드웨어(MAC) 주소
**inet** > IPv4 주소 및 접두사
**172.16.0.255 >** 브로드캐스트 주소(범위, 장치 이름도 표시)
**inet6 >** IPv6 정보
ip 명령은 네트워크 성능에 대한 통계를 표시하는 데에도 사용할 수 있다.
수신(RX)/전송(TX) 된 패킷, 오류/누릭된 카운터를 사용하여 혼잡, 메모리 부족, 오버런 등에 의한 네트워크 문제를 파악할 수 있다.
$ ip -s link show ens192
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:c8:fe:5e brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped missed mcast
107866775 1553193 0 127441 0 871
TX: bytes packets errors dropped carrier collsns
334940 3557 0 0 0 0
altname enp11s0
라우팅 문제 해결
ip 명령어로 라우팅 정보를 확인할 수 있다.
$ ip route
default via 172.16.0.1 dev ens192 proto dhcp metric 100
172.16.0.0/24 dev ens192 proto kernel scope link src 172.16.0.178 metric 100
172.16.0.0/24 dev ens192 proto kernel scope link src 172.16.0.148 metric 100
또한 ping 명령어로 연결 테스트를 진행할 수 있다.
ping 명령의 경우 패킷 수를 따로 제한하지 않는다면 Ctrl+C를 누를 때까지 계속 진행된다.
$ ping -c 5 172.16.0.30
PING 172.16.0.30 (172.16.0.30) 56(84) bytes of data.
64 bytes from 172.16.0.30: icmp_seq=1 ttl=64 time=0.810 ms
64 bytes from 172.16.0.30: icmp_seq=2 ttl=64 time=0.262 ms
64 bytes from 172.16.0.30: icmp_seq=3 ttl=64 time=0.356 ms
64 bytes from 172.16.0.30: icmp_seq=4 ttl=64 time=0.428 ms
64 bytes from 172.16.0.30: icmp_seq=5 ttl=64 time=0.276 ms
--- 172.16.0.30 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4109ms
rtt min/avg/max/mdev = 0.262/0.426/0.810/0.200 ms
원격 호스트 경로를 추적하러면 traceroute/tracepath를 사용한다.
두 명령 모두 UDP 패킷으로 경로를 추적하나, 많은 네트워크가 UDP 및 ICMP 트래픽을 차단한다.
(traceroute 명령에는 UDP(기본), ICMP(-i),TCP(-t)패킷 사용 옵션이 있다.)
$ rpm -qa | grep traceroute
traceroute-2.1.0-16.el9.x86_64
$ traceroute www.naver.com
traceroute to www.naver.com (223.130.200.107), 30 hops max, 60 byte packets
1 _gateway (172.16.0.1) 0.370 ms 0.279 ms 0.288 ms
2 119.194.170.97 (119.194.170.97) 1.814 ms * *
3 112.189.123.21 (112.189.123.21) 1.553 ms 1.441 ms 1.314 ms
4 * * *
5 * * *
6 112.174.75.166 (112.174.75.166) 2.095 ms * 112.174.75.22 (112.174.75.22) 1.704 ms
7 128.134.40.174 (128.134.40.174) 3.109 ms 3.752 ms 218.145.42.66 (218.145.42.66) 3.860 ms
포트 및 서비스 문제 해결
TCP 서비스는 소켓을 통신용 엔드포인트로 사용하며 IP 주소, 프로토콜 및 포트 번호로 이루어져 있다.
표준 포트는 /etc/services 파일에 나열되어 있다.
ss 명령은 소켓 통계를 표시하는데 사용된다.
(net-tools 패키지에 포함된 netstat을 대체한다. 보통 netstat이 더욱 익숙하지만 설치되지 않을 수도 있다.)
$ ss -ta
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
ESTAB 0 0 172.16.0.177:ssh 172.16.0.54:58565
LISTEN 0 511 *:http *:*
LISTEN 0 128 [::]:ssh [::]:*
- SSH에 사용되는 포트는 모든 IPv4 주소에 연결된다. (*는 모두를 나타냄)
- SSH는 172.16.0.177 인터페이스에 연결되며, 다음 172.16.0.54:58565 시스템에서 연결된다.
- SSH에 사용되는 포트는 모든 IPV6주소에 연결된다. (:: 구문은 모두를 표현)
ss or netstat 명령어 옵션
-n 인터페이스 및 포트의 이름 대신 번호 표시
-t TCP 소켓 표시
-u UDP 소켓 표시
-l 연결된 소켓만 표시
-a 모든 소켓 표시
-p 소켓을 사용하는 프로세스 표시
요약/정리
네트워크 설정 검사
# 1. 모든 인터페이스의 현재 IP 주소 및 넷 마크스 표시
[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> 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: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:05:d8:bb brd ff:ff:ff:ff:ff:ff
altname enp11s0
inet 172.16.0.177/24 brd 172.16.0.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet 172.16.0.147/24 brd 172.16.0.255 scope global secondary dynamic noprefixroute ens192 valid_lft 77588sec preferred_lft 77588sec
inet6 fe80::20c:29ff:fe05:d8bb/64 scope link noprefixroute
valid_lft forever preferred_lft forever
# 2. ens[NUMBER] 인터페이스 상태 표시
[root@localhost ~]# ip -s link show ens192
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:05:d8:bb brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped missed mcast
21012202 159396 0 9885 0 73
TX: bytes packets errors dropped carrier collsns
2150954 14700 0 0 0 0
altname enp11s0
# 3. 라우팅 정보 표시
[root@localhost ~]# ip route
default via 172.16.0.1 dev ens192 proto dhcp metric 100
172.16.0.0/24 dev ens192 proto kernel scope link src 172.16.0.177 metric 100
172.16.0.0/24 dev ens192 proto kernel scope link src 172.16.0.147 metric 100
# 4. 라우터에 액세스 가능 여부 확인
[root@localhost ~]# ping -c 3 172.16.0.188
PING 172.16.0.188 (172.16.0.188) 56(84) bytes of data.
From 172.16.0.177 icmp_seq=1 Destination Host Unreachable
From 172.16.0.177 icmp_seq=2 Destination Host Unreachable
From 172.16.0.177 icmp_seq=3 Destination Host Unreachable
--- 172.16.0.188 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2036ms
pipe 3
# 5. 로컬 시스템과 172.16.0.188 사이 모든 홉 표시
[root@localhost ~]# traceroute 172.16.0.188
traceroute to 172.16.0.188 (172.16.0.188), 30 hops max, 60 byte packets
1 localhost.localdomain (172.16.0.177) 3087.422 ms !H 3085.855 ms !H 3085.681 ms !H
# 6. 로컬 시스템에서 연결된 TCP 소켓 표시
[root@localhost ~]# ss -lt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 511 *:http *:*
LISTEN 0 128 [::]:ssh [::]:*
'DevOps > Linux_리눅스' 카테고리의 다른 글
[Linux] OTP 추가 인증 (0) | 2023.03.13 |
---|---|
[Linux] 사용자 계정 생성 (useradd, usermod) (0) | 2023.03.09 |
[Linux] repo 설정 (yum repository) (0) | 2023.01.10 |
[Linux] nmcli/nmtui (1) | 2023.01.09 |
[Linux] Root 비밀번호 초기화 (1) | 2023.01.02 |