[리눅스마스터 1급] 이기적 이론서 4회차 정리 - 네트워크2

🏁 이기적 이론서 학습 범위

  • PART 01 리눅스 실무적 이해
    • CHAPTER 02 네트워크의 이해

네트워크의 설정

☑️ 환경설정

리눅스 네트워크 환경설정

  • 리눅스 네트워크의 호환성
    • 리눅스 배포판에서 운영하고 있는 사이트를 참조하여 네트워크 디바이스의 호환성을 확인한다.
  • 리눅스 네트워크의 다양성
    • 리눅스는 기본적으로 다양한 네트워크 프로토콜과 네트워크 디바이스를 제공한다.
      • ethernet, ppp. slip, x.25, atm, wlan, can, fddi, bluetooth, zigbee, 6lowpan 등
    • 리눅스에서 제공하지 않는 네트워크 디바이스는 호환되는 모듈 파일을 다운 받아 설치한다.

이더넷 카드 설치

  • 대부분은 리눅스 배포판에 포함되어 있다.
  • 최신 이더넷 카드의 경우, 제소사 사이트에서 다운로드 받아 설치한다.
  • 드라이버 다운 후 modprobe나 insmod로 드라이버를 시스템에 로드해야 한다.
  • 시스템 재부팅 시 드라이버가 자동 로드되도록 /etc/modprobe.d 디렉터리 설정이 필요하다.
  • 인터넷 접속을 위한 네트워크 인터페이스 설정
    1. GUI 기반 네트워크 설정 : 이기적 이론서 p.183 참조
    2. 텍스트 기반 네트워크 설정 : 이기적 이론서 p.185 참조
    3. 명령어를 통한 IP 수동 설정

       ifconfig ens33 192.168.100.100 # ens33 인터페이스에 IP 주소 설정 (넷마스코와 브로드케스트 주소는 기본 설정
              
       ifconfig ens33 192.168.100.100 netmask 255.255.255.0 broadcast 192.168.100.255 # 넷마스크, 브로드캐스트 주소 함께 입력
              
       ifconfig ens33 192.168.100.100/24 # 접두어 길이 표기법으로 입력
              
       ifconfig ens33 up # 네트워크 통신을 위해 네트워크 인터페이스 활성화
              
       service network restart # 네트워크 재시작시 수동 설정값은 지워짐
              
       route add default gw 192.168.100.1 # 네트워크 외부로 패킷 전송을 위해 라우팅 테이블에 게이트웨이 주소 추가
      
    4. 네트워크 설정 파일을 통한 IP 수동 설정
      • 네트워크 설정파일에서 IP 주소, 넷마스크, 게이트웨이 주소, 호스트이름, DBS 등의 설정을 수행한다.
      • 설정 변경 후 systemctl restart network 를 실행하여 서비스를 재시작해야 한다.

        네트워크 설정 파일설명
        /etc/sysconfig/network-scripts/ifclg-ens33네트워크 인터페이스마다 환경설정을 수행할 수 있다.
        디바이스명, 프로토콜, IP 주소, 넷마스크, 게이트웨이, DNS 주소, 부팅 시 활성화 여부 등 다양한 IP 설정을 수행한다.
        /etc/sysconfig/network-scripts/ifcfg-eth0 
        /etc/sysconfig/network시스템 전체에 적용할 기본 게이트웨이 주소, 호스트명, 네트워크 연결 허용 여부, 게이트웨이 장치 파일 설정, NIS 도메인 이름을 설정한다.
        /etc/resolv.conf네임 서버 설정과 기본으로 사용할 도메인명을 설정한다. (search / nameserver)
        /etc/hostsIP 주소와 도메인 이름 간의 매핑 테이블로, 해당 시스템에서만 사용하는 정보를 미리 입력한다.

☑️ 네트워크 설정 명령어

ifconfig

  • 역할
    • 네트워크 인터페이스에 대한 환경설정을 수행한다.
    • 아무 옵션 없이 사용 시, 현재 활성화된 네트워크 인터페이스에 대한 정보를 보여준다.
    • ifconfig 명령어가 탑재되어 있지 않다면 yum install net-tools 로 관련 패키지를 설치해야 한다.
  • 형식

      ifconfig [interface]
      ifconfig interface options | address ...
    
  • -a 옵션
    • 모든 네트워크 인터페이스에 대한 설명을 보여준다.
      $ ifconfig -a
    
  • 특정 네트워크 인터페이스의 설정 보기
    • 옵션으로 네트워크 인터페이스명을 주면 해당 인터페이스에 대한 설명만 보여준다.
      $ ifconfig eth0
    
  • 특정 네트워크 인터페이스 (비)활성화하기
    • 네트워크 인터페이스 비활성화 시, 아무런 데이터가 송수신되지 않는다.
    • 네트워크 인터페이스 up 을 사용해서 활성화한다.
      $ ifconfig eth0 up
    
    • 네트워크 인터페이스 down 을 사용해서 비활성화한다.
      $ ifconfig eth0 down
    
  • 네트워크 설정하기
    • 고정 IP를 설정하려면 인터페이스 이름 IP 주소 를 입력한다.
      $ ifconfig wlan0 192.168.100.100
    
    • netmask 로 넷마스크를 설정한다.
      $ ifconfig wlan0 netmask 255.255.255.0
    
    • broadcast 로 브로드캐스트 주소를 설정한다.
      $ ifconfig wlan0 broadcast 192.168.100.253
    
    • IP 주소, 넷마스크, 브로드캐스트 주소를 한 번에 변경 가능하다.
      $ ifconfig wlan0 192.168.100.253 netmask 255.255.255.0 broadcast 192.168.100.253
    
    • IP 주소, 넷마스크, 브로드캐스트 주소를 한 번에 변경하면서 인터페이스를 활성화한다.
      $ ifconfig wlan0 192.168.100.253 netmask 255.255.255.0 broadcast 192.168.100.253 up
    

nmcli

  • 역할
    • Network Manager를 실행하고 ‘Edit a connection’을 선택한다.
  • 형식

      nmcli [OPTIONS] OBJECT { COMMAND | help }
    
  • Network Manager 정보 출력하기

      $ nmcli g
    
  • 네트워크 장치목록 출력하기
    • device 를 줄여서 d 라고 할 수 있다.
      $ nmcli device
    
    • -f 으로 원하는 필드만 출력한다.
      $ nmcli -f DEVICE.IP4-CONNECTIVITY d
    
  • 네트워크 연결하기
    • 현재 활성화된 연결을 출력한다.
    • connection 을 줄여서 c 라고 할 수 있다.
      $ nmcli connection
    
    • -f all 입력 시 모든 필드를 출력한다.
      $ nmcli -f all c
    
    • 지정한 네트워크 장치를 IP 자동 설정하고 부팅 시 자동 연결하도록 설정한다.
      • mmodify 이고, ens33 은 네트워크 장치다.
      • IP를 자동 설정하기 위해 ipv4.methodauto 로 설정하고, 부팅 시 자동 연결하도록 connection.autoconnectyes 로 설정한다.
        $ nmcli c m ens33 ipv4.method auto connection.autoconnect yes
      
      • IP를 수동 설정 하기 위해 ipv4.methodmanual 로 설정하고 ipv4.addresses 에 IP를 입력한다. ipv4.gateway 로 게이트웨이 설정을 하고 ipv4.dns 로 DNS 설정을 한다.
        $ nmcli c m eth0 ipv4.method manual connection.autoconnect yes ipv4.addresses 10.20.30.41/24 ipv4.gateway 10.20.30.254 ipv4.dns "168.126.63.1 168.126.63.2"
      

route

  • 역할
    • 라우팅 테이블을 표시하거나 수정한다.
    • 네트워크 주소 (패킷의 목적지 주소와 넷마스크를 AND 연산)와 라우팅 테이블에 매칭되는 경로가 있다면 해당 경로에 설정된 네트워크 인터페이스를 통해 패킷을 라우팅한다.
  • 형식

      route
      route add [-net|-host] target [netmast Nm][gw Gw][[dev] if]
      route del [-net|-host] target [gw Gw][netmast Nm][[dev] if]
    
  • 라우팅 테이블 출력하기
    • 아무 옵션없이 명령어 입력 시, 시스템의 라우팅 테이블 정보를 보여준다.
      $ route
    
    • -n 옵션 사용 시 있는 그대로 숫자를 표시한다.
      $ route -n
    
  • 디폴트 게이트웨이 추가 및 삭제하기
    • add default gw 를 사용하여 디폴트 게이트웨이를 추가한다.
      $ route add default gw 10.0.2.2 dev eth0
    
    • del 로 디폴트 게이트웨이를 삭제한다.
      $ route del default gw 10.0.2.2
    
  • 특정 네트워크에 대한 라우팅 정보 추가 및 삭제하기
    • -netnetmask 을 사용해 특정 네트워크를 목적지로 하는 라우팅 정보를 추가한다.
      $ sudo route add -net 10.0.2.128 netmask 255.255.255.128 gw 10.0.2.2 dev eth0
    
    • del 을 사용해 디폴트 게이트웨이를 삭제한다.
      $ sudo route del -net 10.0.2.128 netmask 255.255.255.128 gw 10.0.2.2 dev eth0
    
  • 특정 호스트에 대한 라우팅 정보 추가 및 삭제하기
    • -host 를 사용하여 특정 호스트를 목적지로 하는 라우팅 정보를 추가한다.
      $ route add -host 10.0.2.50 dev eth0
    
    • del-host 를 사용하여 특정 호스트를 목적지로 하는 라우팅 정보를 삭제한다.
      $ sudo route del -host 10.0.2.50 dev eth0
    

arp

  • 역할
    • 이더넷 기반 IP 통신을 위해 호스트 주소를 MAC 주소로 변환해야 한다.
    • 호스트 주소에 대한 MAC 주소를 알아내기 위해 ARP 프로토콜을 사용한다.
      • 이 때 알아낸 MAC 주소ARP 캐시에 저장한다.
      • 동일한 컴퓨터에 통신을 시도할 경우, 다시 ARP 프로토콜을 수행할 필요가 없다.
  • 형식

      arp [-a][hostname]
      arp -s hostname hwaddr
      arp -d hostname
    
  • arp 캐시 보기
    • 옵션 없이 사용 시 ARP 캐시를 확인할 수 있다.
    • -e 를 사용해도 동일하며, BSD 스타일로 표시된다.
      $ arp
    
  • -a 사용 시, 리눅스 스타일로 표시된다.

      $ arp -a
      ? (10.0.2.2) at 52:54:00:12:35:02 [ether] on eth0
    
  • -a IP 주소 입력 시 특정 호스트의 MAC 주소를 알 수 있다.

      $ arp -a 10.0.2.2
    
  • arp 캐시에 정보 추가 및 삭제하기
    • -s 를 사용하여 직접 IP 주소와 MAC 주소를 입력할 수 있다.
      $ arp -s 10.0.2.3 11:22:33:44:55:66
    
    • -d 를 사용하여 ARP 캐시에서 특정 IP 주소의 정보를 삭제할 수 있다.
      $ arp -d 10.0.2.3
    
  • 그 밖의 옵션
    • -n : 출력 정보를 도메인 주소 대신 IP 주소로 출력한다.
    • -v : 관련 정보를 상세히 출력한다.

☑️ 네트워크 진단 명령어

ethtool

  • 역할
    • 네트워크 인터페이스 카드 (NICs)를 위한 유틸리티 또는 설정 도구
    • 네트워크 속도(speed), 포트(port), 자동 설정(auto-negotiation)과 같은 네트워크 카드의 설정을 변경한다.
  • 형식

      ethtool [options] interface
    
  • 예제
    • 네트워크 인터페이스의 정보 보기
      $ ethtool ens33
    
    • 네트워크 인터페이스의 디바이스 드라이버 정보 보기
      $ ethtool -i eth0
    
    • 네트워크 인터페이스의 통계 보기
      $ ethtool --statistics eth0
    
    • 네트워크 인터페이스의 설정 변경하기
      $ ethtool --change eth0 spped 100 duplex full autoneg off # speed, duplex, autoneg의 값 변경
    

IP

  • 역할
    • ifconfig 를 대체한다.
    • 시스템의 네트워크 인터페이스에 주소를 할당하거나 파라미터 설정 기능을 수행한다.
  • 형식

      ip [options][command][address][dev interface]
    
  • 네트워크 인터페이스의 정보 출력
    • 모든 네트워크 인터페이스의 정보를 출력한다.
      $ ip addr
      $ ip addr show
      $ ip addr list
    
  • IP 할당 및 제거
    • 네트워크 인터페이스에 IP를 할당한다.
      $ ip addr add 192.168.100.100 dev eth0
    
    • 네트워크 인터페이스에 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
    
  • 네트워크 인터페이스 상태 및 파라미터 변경
    • 네트워크 인터페이스를 비활성화한다.
      $ ip link set dev eth0 down
    
    • 네트워크 인터페이스를 활성화한다.
      $ ip link set dev eth0 up
    
    • 네트워크 인터페이스의 MTU(Maximum Transfer Unit)를 변경한다.
      $ ip link set mtu 9000 dev eth0
    
  • 네트워크 인터페이스의 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
    
  • 라우팅 정보 관리
    • 라우팅 정보를 출력한다.
      $ ip route
      $ ip route list
    
    • 라우팅 정보를 추가한다.
      • 특정 IP 주소에 대한 라우팅 정보를 추가하려면 IP 주소를 명시해야 한다.
      • default : 기본 게이트 웨이를 지정할 때 사용
      $ ip route add 10.0.2.128/25 via 10.0.2.130 dev eth0
    
    • 라우팅 정보를 삭제한다.
      $ ip route del 10.0.2.128/25
    

ping

  • 역할
    • ICMP(Internet Control Message Protocol)을 이용한 네트워크 상태 진단 도구
    • 원격 호스트가 네트워크에 연결된 상태인지 확인하고 네트워크 지연시간을 측정할 수 있다.
  • 형식

      ping options hostname|address
    
  • 주요 옵션

    옵션설명
    -c countping을 보낼 횟수(기본 값은 무제한)
    -i intervalping을 보낼 시간 간격(기본값은 1초)
    -s sizeping을 보낼 데이터의 크기(최대 65507)
    -fping을 최대한 많이 보낸다(flood ping), -i 옵션을 지정하지 않는다면 0 값으로 기본 설정되며 가능한 많은 ping 요청을 전송한다.
    -w secondsping 시작 후 몇 초 뒤에 실행을 멈출지 결정한다.
    -i interface네트워크 인터페이스가 다수일 경우 ping을 보낼 인터페이스를 지정한다.
  • 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
    
  • 정한 시간동안 ping 하기
    • -w 을 사용해 8.8.8.8 주소로 3초간 ping 을 수행한다.
      $ ping -w 3 8.8.8.8
    
  • TTL(time to live)
    • ping 전송 시 ICMP 패킷이 여러 라우터를 거쳐 상대방에 도달할 때 TTL 값은 하나씩 감소한다.
    • 예를 들어, TTL 기본값이 64인데 TTL이 53이라면 11개의 라우터를 거친 것이다.
    • TTL은 OS마다 기본값이 다르다.
    • 아래 명령어로 기본값을 변경할 수 있다.
      $ systl net.ipv4.ip_default_ttl=129
      $ echo 129 | tee /proc/sys/net/ipv4/ip_default_ttl
    

netstat

  • 역할
    • 네트워크 연결, 라우팅 테이블, 인터페이스의 통계 정보, 마스커레이드 연결, 멀티캐스트 멤버십 등 다양한 네트워크 정보를 출력한다.
  • 형식

      netstat options
    
  • 주요 옵션

    옵션설명
    옵션 지정 안함열려있는 소켓의 모든 정보를 출력한다.
    —route, -r라우팅 테이블을 조회한다.
    —groups, -gIPv4와 IPv6를 위한 멀티캐스트 그룹 멤버십 정보를 조회한다.
    —interfaces, -i모든 네트워크 인터페이스에 대한 정보를 출력한다.
    —masquerade, -M마스커레이드 연결의 정보를 출력한다.
    —statistics, -s각 프로토콜의 통계 정보를 출력한다.
  • 연결된 모든 소켓 정보 출력하기
    • -a : 연결된 모든 소켓 정보를 출력한다.
    • -n : 심볼릭 이름을 사용하지 않고 숫자로 출력한다.
      $ netstat -an
    
  • 라우팅 정보 출력하기
    • -r 을 사용해 라우팅 정보를 출력한다.
      $ netstat -rn
    
  • 특정 주소 패밀리에 대한 정보만 출력한다.
    • —inet, -A inet 으로 IPv4 관련 정보를 출력한다.
      $ netstat -A inet
    
    • —inet6, -A inet6 으로 Ipv6 관련 정보를 출력한다.
      $ netstat -A inet6
    
  • netstat의 소켓 상태 (state)
    • 클라이언트의 연결을 기다리는 중이면 LISTEN, 연결이 완료되었다면 ESTABLISHED가 표시된다.

traceroute

  • 역할
    • 네트워크의 장애 분석을 위해 패킷이 어떤 경로로 전송되는지 추적한다.
  • 형식

      traceroute hostname | address
    
  • 특정 사이트에 어떤 경로로 패킷이 전달되는 지 추적하기
    • www.google.com에 대한 라우팅 과정을 출력한다.
      $ traceroute www.google.com
    
    • 8.8.8.8에 대한 라우팅 과정을 출력한다.
      $ traceroute 8.8.8.8
    
  • 다양한 방식을 통해 경로 추적하기
    • -I 는 ICMP 방식으로 경로를 추적한다.
      $ traceroute -I www.google.com
    
    • -T 는 TCP 방식으로, -U 는 UDP 방식으로 경로를 추적한다.
      $ traceroute -T 8.8.8.8
      $ traceroute -U 8.8.8.8
    

mii-tool

  • 역할
    • 네트워크 인터페이스의 연결 상태를 확인하고 설정을 변경하는데 사용한다.
  • 형식

      mii-tool [option] interface
    
  • 네트워크 인터페이스 정보 출력
    • -v 를 사용하여 네트워크 인터페이스의 상세 정보를 출력한다.
      $ mii-tool -v eth0
    
  • 네트워크 인터페이스 재시작
    • -r 을 사용하여 네트워크 인터페이스를 재시작한다.
      $ mii-tool -r eth0
    
  • 네트워크 인터페이스 설정 변경
    • -F , —force 를 사용해 네트워크의 인터페이스 정보를 강제로 변경한다.
      $ mii-tool -v -F 100baseTx-FD eth0
    

ss

  • 역할
    • 소켓에 대한 정보를 제공한다.
  • 형식

      ss [option][filter]
    
  • 옵션

    옵션내용설명
    -n—numeric서비스 이름 대신 숫자로 표기한다.
    -r—resolve숫자 형태의 IP 주소나 포트를 이름으로 표기한다.
    -a—all모든 소켓의 정보를 출력한다.
    -l—listeningListen 소켓의 정보를 출력한다.
    -o—options타이머의 정보를 출려한다.
    -e—extended확장된 소켓 정보를 출력한다.
    -m—memory소켓 메모리 사용량을 출력한다.
    -p—processes소켓을 사용하고 있는 프로세스를 출력한다.
    -i—info내부 TCP 정보를 출력한다.
    -s—summary소켓의 요약 정보를 출력한다.
    -4—ipv4IPv4 소켓 정보만 출력한다.
    -6—ipv6IPv6 소켓 정보만 출력한다.
    -0—packetPACKET 소켓 정보를 출력한다.
    -t—tcp오직 tcp 소켓 정보만 출력한다.
    -u—udp오직 udp 소켓 정보만 출력한다.
    -f—family=FAMILY해당하는 주소 패밀리의 소켓만 출력한다.
  • 주요 예제

      $ ss # 현재 연결된 소켓 정보 출력
        
      $ ss -a # 모든 소켓 정보 출력
        
      $ ss -l # listen 소켓 정보 출력
        
      $ ss -t # TCP 소켓 정보 출력
        
      $ ss -t state established # 특정 상태(ex. established)의 소켓만 출력
        
      $ ss -ltn sport le 500 # 필터링 기능 제공 (ex. 송신지 포트 500과 같거나 작은 소켓만 출력)
    

☑️ DNS 명령어

nslookup

  • 역할
    • 네임 서버 정보를 조회하거나 IP를 통해 도메인명을 질의한다.
  • 형식

      nslookup [option] hostname|address [dns]
    
  • 대화명으로 네임 서버 질의하기

      $ nslookup
    

© 2021. All rights reserved.

yaejinkong의 블로그