Linux/리눅스 실무의 이해

03-02-03 네트워크 설정_네트워크 진단 명령어

easyfly 2022. 2. 2. 15:00
반응형

03-02-03 네트워크 설정_네트워크 진단 명령어

ethtool

  1. 설명
    • ethtool은 네트워크 인터페이스 카드를 위한 유틸리티로 설정 도구이다.
    • 네트워크 속도, 포트, 자동 설정과 같은 네트워크 카드의 설정을 변경할 수 있다.
  2. 형식
    • ethtool [options] interface
  3. 예제
    • ethtool enp0s3
    • 네트워크 인터페이스 정보 보기

ip

  1. 설명
    • 시스템의 네트워크 인터페이스에 주소를 할당하거나 파라미터 설정 기능을 수행하는 ifconfig를 대체하는 명령어이다.
  2. 형식
    • ip [options] [command] [address] [dev interface]
  3. 주요 옵션
    • route: 라우팅 테이블에 항목을 추가하거나 삭제한다.
    • addr: 네트워크 인터페이스의 IP 정보를 출력한다.
    • link: 네트워크 인터페이스에 상태를 설정한다.
    • neighbor: ARP 캐시를 관리한다.
  4. 네트워크 인터페이스 정보 출력
    • 모든 네트워크 인터페이스의 정보를 출력한다.
    • # ip addr( ip addr show, ip addr list)
    • CentOS에서 ip addr
    • LinuxMint에서 ip addr
  5. IP 할당 및 제거
    • 네트워크 인터페이스에 IP를 할당한다.
    • # ip addr add 192.168.100.100 dev enp0s3
    • 네트워크 인터페이스에 IP와 넷마스크를 할당한다.
    • # ip addr add 192.168.100.100/255.255.255.0 dev eth0
    • 또는 ip addr add 192.168.100.100/24 dev eth0
    • 네트워크 인터페이스에 브로드캐스트 주소를 할당한다.
    • # ip addr add broadcast 192.168.100.255 dev eth0
    • 네트워크 인터페이스에서 IP 주소를 삭제한다.
    • # ip addr del 192.168.100.100/24 dev eth0
  6. 네트워크 인터페이스 상태 파라미터 변경
    • 네트워크 인터페이스를 비활성화
    • # ip link set dev eth0 down
    • 네트워크 인터페이스를 활성화
    • # ip link set dev eth0 up
    • 네트워크 인터페이스의 MTU(Maximum Transfer Unit)를 변경
    • # ip link set mtu 9000 dev eth0
  7. 네트워크 인터페이스의 ARP 캐시 관리
    • 네트워크 인터페이스의 ARP 캐시 정보를 출력
    • # ip neighbor show
    • 네트워크 인터페이스의 ARP 캐시 정보를 추가
    • # ip neighbor add 192.168.101.10 lladdr 11:22:33:44:55:66 dev eth0 nud perm
    • 네트워크 인터페이스의 ARP 캐시 정보를 삭제
    • # ip neighbor del 192.168.101.10 dev eth0
  8. 라우팅 정보 관리
    • 라우팅 정보를 출력한다.
    • # ip route, ip route list
    • 라우팅 정보를 추가한다.
    • # ip route add 10.0.2.128/25 via 10.0.2.130 dev eth0
    • 라우팅 정보를 삭제한다.
    • # ip route del 10.0.2.128/25

ping

  1. 설명
    • ping은 ICMP(Internet Control Message Protocol)을 이용한 네트워크 상태 진단 툴이다.
    • 원격 호스트가 네트워크에 연결된 상태인지 확인하고 네트워크 지연시간도 측정할 수 있다.
  2. 형식
    • # ping options hostname|address
  3. 주요 옵션
    • -c count: ping을 보낼 횟수(기본값은 무제한)
    • -i interval: ping을 보낼 시간 간격(기본값은 1초)
    • -s size: ping을 보낼 데이터 크기(최대 65507)
    • -f: ping을 최대한 많이 보낸다(flood ping), -i 옵션을 지정하지 않는다면 0 값으로 기본 설정되며 가능한 많은 ping 요청을 전송한다.
    • -w seconds: ping 시작 후 몇 초 뒤에 실행을 멈출 것인지를 결정
    • -l interface: 네트워크 인터페이스가 다수일 경우 ping을 보낼 인터페이스를 지정함
  4. ping 전송하기
    • -c 옵션을 사용하여 ping을 10번 보낼 때마다 -s 옵션으로 설정한 데이터를 1000바이트씩 보낸다. 또한 -i 옵션을 통해 0.2초마다 8.8.8.8 주소로 ping을 전송할 때
    • # ping -c 10 -s 1000 -i 0.2 8.8.8.8
  5. 정한 시간 동안 ping 하기
    • -w 옵션으로 8.8.8.8 주소로 3초간 ping을 수행
    • # ping -w 3 8.8.8.8
    • icmp_seq를 통해 ping 순서를 알 수 있고 ttl(time to live)을 통해 라우터를 얼마나 거쳤는지 알 수 있다.
    • time은 응답시간을 의미한다. 이 시간이 짧을수록 네트워크 상태가 좋거나 거리가 가깝다는 의미이다.
  6. TTL(time to live)값의 의미
    • ping을 전송하면 ICMP 패킷이 여러 라우터를 거쳐 상대방에 도달할 것이다. 이때마다 TTL값이 하나씩 감소한다. 가령 TTL 기본값이 64인 시스템에서 ping을 전송했을 때 TTL이 53이라면 11개의 라우터를 거쳤다는 의미가 된다.
    • TTL은 OS마다 기본값이 다르다. 윈도의 경우 128이고, 리눅스는 64이다.
    • 기본값 변경 명령어
    • # sysctl net.ipv4.ip_default_ttl=129 또는 echo 129 | tee /proc/sys/net/ipv4/ip_default_ttl

netstat

  1. 설명
    • 네트워크 연결, 라우팅 테이블, 인터페이스 통계 정보, 마스커페이드 연결, 멀티캐스트 멤버십 등 다양한 네트워크 정보를 출력
  2. 형식
    • netstat options
  3. 주요 옵션
    • 첫 번째 옵션
      • 옵션 없음: 열려 있는 소켓의 모든 정보를 출력
      • --route, -r: 라우팅 테이블을 조회
      • --groups, -g: IPv4와 IPv6를 위한 멀티캐스트 그룹 멥버십 정보를 조회
      • --interfaces, -i: 모든 네트워크 인터페이스에 대한 정보를 출력
      • --masquerade, -M: 마스크레이드 연결의 정보를 출력
      • --statistics, -s: 각 프로토콜의 통계 정보를 출력
    • 첫 번째 옵션 다음 옵션들
      • -v, --verbose: 풍부한 정보 제공
      • -n, --numeric: 심볼릭 호스트, 사용자, 포트 대신 숫자로 표기
      • -A, protocol=family: 주소 패밀리(address family)를 지정한다. inet, inet6, ax25(ARM AX.25), netrom(AMPRNET/ROM), ipx(Novell IPX), ddp(appletalk DDP), x25(CCITT X.25)를 지정할 수 있다. inet은 raw와 udp 그리고 tcp 프로토콜의 소켓을 포함한다.
      • -c, --continuous: 매초마다 계속적으로 정보를 출력한다.
      • -p, --program: 소켓과 연관된 프로그램 이름과 프로세스 아이디(PID)를 출력한다.
      • -l, --listening: Listen 소켓에 대한 정보를 출력
      • -a, --all: Listen 소켓과 Listen 소켓이 아닌 경우 모든 정보 출력
      • -t: TCP 소켓의 정보를 출력
      • -u: UDP 소켓의 정보를 출력
      • -g: 멀티캐스트 그룹 멤버십 정보 출력
  4. 연결되어 있는 모든 소켓 정보 출력하기
    • -a 옵션으로 모든 소켓, -n 옵션으로 호스트명이나 포트명과 같은 심볼릭 이름을 사용하지 않고 숫자로 출력
    • netstat -an
  5. 라우팅 정보 출력하기
    • netstat -rn: -r 옵션을 사용하여 라우팅 정보 출력
  6. 특정 주소 패밀리(address family)에 대한 정보만 출력하기
    • --inet 또는 -A inet 옵션을 통해 IPv4 관련 정보를 출력한다.
    • netstat -A inet
    • --inet6 또는 -A inet6 옵션을 통해 IPv6 관련 정보를 출력
    • netstat -A inet6
  7. netstat의 소켓 상태
    • LISTEN: 대기 상태
    • ESTABLISHED: 연결 완료
    • SYN_SENT: SYN을 보낸 상태
    • SYN_RECEIVED: SYN을 받은 상태

traceroute

  1. 설명
    • 네트워크 장애 분석을 위해 패킷이 어떤 경로로 전송되는지 추적하기 위한 명령어
  2. 형식
    • traceroute hostname | address
  3. 특정 사이트에 어떤 경로로 패킷이 전달되는지 추적하기
    • traceroute www.google.com
  4. 다양한 방식을 통해 경로 추적하기
    • -I 옵션을 사용해 icmp 방식으로 경로 추적
    • traceroute -I www.google.com
    • -T 옵션을 통한 TCP 방식 경로 추적
    • -U 옵션을 통한 UDP 방식 경로 추적

mii-tool

  1. 설명
    • mii-tool(media independent interface tool)은 네트워크 인터페이스의 연결 상태를 확인하고 설정을 변경하는데 사용하는 툴.
  2. 형식
    • mii-tool [option] interface
  3. 네트워크 인터페이스 정보 출력
    • # mii-tool -v eth0: -v 옵션은 상세 정보
  4. 네트워크 인터페이스 정보 출력
    • # mii-tool -r eth0: -r 옵션은 네트워크 인터페이스 새로 시작
  5. 네트워크 인터페이스 설정 변경
    • # mii-tool -v -F 100baseTx-FD eth0: -F 옵션 또는 --force 옵션은 네트워크 인터페이스 정보를 강제로 변경

ss

  1. 설명
    • 소켓에 대한 정보를 제공해 주는 틀
  2. 형식
    • ss [option] [filter]
  3. 옵션
    • -n: --numeric
    • -r: --resolve
    • -a: --all
    • -l: --listening
    • -o: --options
    • -e: --extended
    • -m: --memory
    • -p: --processes
    • -i: --info
    • -s: --summary
    • -4: --ipv4
    • -6: --ipv6
    • -0: --packet
    • -t: --tcp
    • -u: --udp
    • -f: --family=FAMILY
  4. 주요 예제
    • # ss: 현재 연결된 소켓 정보 출력
    • # ss -a: all 모든 정보 출력
    • # ss -l: listen 소켓 정보 출력
    • # ss-t: TCP 소켓 정보 출력
    • # ss -t state established: established 상태의 소켓만 출력
    • # ss -ltn sport le 500: 필터링 기능을 제공한다. 아래는 송신지 포트 500과 같거나 작은 소켓만 출력

 

반응형