본문 바로가기

자격증/리눅스 마스터 1급

Part1) 리눅스의 실무의 이해 - 네트워크의 이해(2) | 네트워크 설정

I. 네트워크 환경설정 - (매년 출제)


환경 설정

1) 이더넷 설정


장치 드라이버

-자동으로 이더넷 카드에 대한 커널의 장치 모듈이 실행되지 않는 경우에는 먼저 네트워크 카드를 위한 커널 모듈을 실행해야한다.

-네트워크 카드의 모듈 위치: /lib/modules/<kernel-version>/kernel/drivers/net

-네트워크 카드 모듈이 있을 시, modprobe 또는 insmod 명령으로 해당 모듈을 커널이 인식 할 수 있도록 활성화 시킬 수 있다.


*리눅스가 지원하는 네트워크 인터페이스 종류

 lo

 루프 백 인터페이스 (127.0.0.1) 

 eth[number] 

 이더넷 인터페이스

 ppp[number]

 PPP 인터페이스 (모뎀에 이용)

 dl[number]

 D-Link DE-600 포켓 어댑터 시리즈 인터페이스 

 plip[number] 

 패럴렐(Parallel) 라인 인터페이스 

 sl[number] 

 SLIP 인터페이스 



커널에 모듈로 랜 카드 인식

1.수동으로 모듈 적재: 네트워크 관련 모듈 위치(/lib/modules/<kernel-version>/kernel/drivers/net)

 커널에 모듈을 다루는 명령어

 /sbin/modprobe

 모듈을 검색하여 적재한다.

 /sbin/modprobe -r(= -remove) 

 모듈을 제거한다. 

 /sbin/lsmod 

 적재되어 있는 모듈의 정보를 보여준다. 

 /sbin/insmod 

 모듈을 커널에 인식시킨다. 

 /sbin/rmmod 

 적재되어 있는 모듈을 제거한다. 


 3com 3c509계열의 랜카드를 직접 모듈로 올리는 예

 # modprobe 3c59x 또는 # insmod /lib/modules/<kernel-version>/kernel/drivers/net/3c59x.ko  // 모듈 적재

 # lsmod // 모듈 적재 확인


 Module   Size  Used by

 3c59x    79989 1

 ....

 # modprobe -r 3c59x 또는 # rmmod 3c59x // 적재된 모듈 제거


2.부팅 시 자동으로 모듈 적재: /etc/modprobe.conf(다른 버전: /etc/modprobe.d/<모듈명>)에 설정 해두어 모듈을 자동으로 RAM에 적재

[옵션: alias, options, install, remove, include, blacklist]



2) 네트워크 환경 설정


1.ifconfig

 1] 네트워크 카드 활성화 

 # ifconfig eth0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255 up 

 2] 설정 내용 확인 - (MAC, IP, 브로드캐스트, 서브넷 마스크, MTU, RX packets, TC packets, Collisions, Interrupt, 현재 UP여부)

 # ifconfig 

 3] 기존 설정 내용 해체 

 # ifconfig eth0 down 


 라우팅 테이블에 엔트리 추가 (route, 게이트웨이, DNS 서버 설정)

 1] 192.168.1.x로 route 활성화

 # route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0 

 2] 디폴트 게이트웨이 설정 

 # route add default gw 192.168.1.1 dev eth0

 3] /etc/resolv.conf에 DNS 서버 설정

 nameserver 168.126.63.1

 nameserver 168.126.63.2

 search cblaw.net 



2.netconfig: 콘솔용 프로그램으로 네트워크 터미널 상에서도 실행이 가능하며 간단하게 네트워크 설정을 할 수 있는 툴이다.

 콘솔에서 명령어를 통해 실행

 # setup 또는 #netconfig(안되는 버전도 있음) 



3.네트워크 설정 프로그램: GUI환경에서 네트워크 설정


4.설정 파일 편집을 통한 네트워크 설정: /etc/sysconfig/network-scripts/ifcfg-eth0 (데비안: /etc/network/interfaces) [제일 자주 씀]

▲모든 설정을 마친 후에는 네트워크 재시작을 해줘야 한다. [ # service network restart, # /etc/init.d/network restart ]




네트워크 관련 명령어


1) ifconfig


 네트워크 설정 확인

 # ifconfig 

 MAC주소=00:0C:29:6B:5E:ED

 IP주소=192.168.1.10

 브로드캐스트=192.168.1.255

 서브넷마스크=255.255.255.0

 MTU(최대 전송 단위)=1500

 RX packets(부팅 후 받은 패킷 수)=26786979

 TX packets(부팅 후 보낸 패킷 수)=776573

 collisions(충돌된 데이터 수)=0

 현재 UP(사용가능)된 상태

 특정 네트워크 확인

 # ifconfig eth0(특정네트워크이름) 

 네트워크 활성/비활성

 # ifconfig eth0 up / # ifconfig eth0 down 

 네트워크 명령어 설정 

 # ifconfig eth1 192.168.0.150 netmask 255.255.255.0 broadcast 192.168.0.255 up 



2) netstat: 현재 연결된 네트워크 연결과 라우팅 테이블, 인터페이스에 대한 통계, 마스커레이딩 연결, 멀티캐스팅 정보 등을 보여준다.


*주요옵션

옵션

 설명 

-a

 --all과 같으며, listen되는 소켓정보와 listen되지 않는 소켓정보를 모두 보여준다. 

-n

 --numeric과 같으며, 10진수의 수치정보로 결과를 출력해준다. 

-r

 --route와 같으며, 설정된 라우팅 정보를 출력해준다. 

-p

 --program과 같으며, 실행되고있는 각 프로그램과 PID정보를 출력한다.

-i

 --interface(=iface)와 같으며, 모든 네트워크 인터페이스 정보를 출력한다. 

-c

 --continuous와 같으며, netstat결과를 연속적으로 출력한다. 

-l

 --listening과 같으며, listen되고 있는 소켓 정보를 출력한다. 

-s

 --statistics와 같으며, 각 프로토콜에 대한 통계정보를 출력한다. 


인터페이스의 표시

 # netstat -i 

 라우팅 정보 출력

 # netstat -rn

 

 패킷 통계 보기

 # netstat -s // IP, ICMP, TCP, UDP 등의 프로토콜에 대해 들어오고 나간 패킷, 에러난 패키 등을 보고  

 열려진 소켓들 출력하기

 # netstat 

-State 상태 출력에 대한 설명

  • ESTABLISHED: 소켓이 연결되어있다.
  • SYN_SENT: 소켓이 동작 중이고, 연결을 하려고 시도 중이다.
  • SYN_RECV: 네트워크로부터 연결 요청을 받았다.
  • FIN_WAIT1: 소켓의 연결이 끊어지고, 연결이 중단되고 있는 중이다.
  • FIN_WAIT2: 연결이 끊어지고, 소켓이 원격의 연결중단을 기다리고 있다.
  • TIME_WAIT: 소켓이 네트워크 상에 있는 패킷을 처리하기 위해 대기중이다.
  • CLOSED: 소켓이 사용중이 아니다.
  • CLOSE_WAIT: 원격지에서 연결을 중단했고, 소켓이 끝나기를 기다리고 있다.
  • LAST_ACK: 원격지의 연결이 중단되고, 소켓은 끝났다.
  • LISTEN: 소켓이 연결을 기다리고 있는 상태 (-l, -a 옵션을 줬을때만 보임)
  • CLOSING: 양쪽에서 연결은 끊겼지만, 아직 보내지 않은 데이터가 있는 상태
  • UNKNOWN: 소켓의 상태가 파악되지 않는 상태



3) route: 라우팅 경로를 보거나 변경할 수 있도록 해주는 명령어


*주요옵션

옵션

 설명 

-F

 커널의 FIB 라우팅 테이블에 기초하여 작동 (기본값) 

-C 

 커널의 라우팅 캐시에 기초하여 작동

-n 

 심볼릭 호스트 이름이 아닌 IP로 나온 주소를 보여줌

-e 

 라우팅 테이블을 출력하기 위해 netstat 포맷을 사용

-net 

 목적지 네트워크

-host

 목적지 호스트

del

 route를 삭제

add

 새로운 route를 추가

netmask

 네트워크 route를 추가할 때 사용

gw

 게이트웨이를 통해 패킷을 route 

metric 

 라우팅 테이블 안에 있는 metric 필드를 metric 뒤의 숫자로 세팅 

irtt 

 해당 route에 걸친 TCP 연결에 대한 Initial Round Robin Trip 시간 (기본값=300ms) 


  # route

Destination

 목적지 네트워크나 호스트의 주소이다.

Gateway 

 게이트웨이의 주소이다. (미설정 시 (*)로 표시)

Genmask 

 목적지 네트워크에 대한 넷마스크값이다. 255.255.255.255일 경우 호스트이고 0.0.0.0일 경우 default 경로이다. 

Flags 

 호스트들에 대한 플래그이다.

 [U-해당 경로가 동작중임, H-목적기가 호스트임, G-게이트웨이를 사용함 (이외에도 R,D,M,A,C,! 가 있음)] 

Metric

 목적지까지의 거리(단위:hop)이다. 

Ref 

 리눅스에서는 쓰이지 않지만 해당 경로에대한 참조의 숫자를 나타낸다. 

Use

 해당 경로를 사용한 숫자이다. 

Iface 

 해당 경로로 패킷을 보낼때 사용하는 인터페이스의 이름이다. 


*route 명령 활용 예

 라우팅테이블 확인 작업

 # route 또는 # route -n

 새로운 라우팅테이블 추가

 # route add -net <네트워크 주소> netmask <넷마스크값> dev <인터페이스명>  

 기존 라우팅테이블 제거 작업 

 # route del -net <네트워크 주소> netmask <넷마스크값> [dev <인터페이스명>]

 기본 게이트웨이 추가 작업 

 # route add default gw <기본 게이트웨이 주소> dev <인터페이스명>

 기본 게이트웨이 제거 작업 

 # route del default gw <기본 게이트웨이 주소> dev [<인터페이스명>] 

 루프백 인터페이스 추가 작업

 # ifconfig lo 127.0.0.1 ▶ # route add -net 127.0.0.1 



4) traceroute: 내부 네트워크가 정상 작동 중이지만, 외부로 연결이 안될 경우 확인하는 프로그램이다.


 사용법: # traceroute destination [port] 



5) tracepath: 패스를 가지고있는 MTU를 통해서 목적시스템까지의 경로를 알아내는 프로그램이다.


 사용법: # tracepath destination [port] 



6) ping: 컴퓨터의 네트워크가 정상적으로 동작중인지 확인해볼 때 사용하는 도구이다.


 # ping

 

 위 그림 처럼 ping은 인터럽트신호(^c)를 보내기 전까지 계속 보내기 때문에 보낼 패킷 수 지정을 다음 옵션을 추가해 지정한다.

 # ping -c 5 www.naver.com // 5번만 보낸다. 



7) arp(Address Resolution Protocol): 동일한 네트워크 내에 존재하는 호스트들의 IP 주소와 ethernet 주소를 확인하는 명령어이다.


*주요옵션

옵션

 설명 

-a

 ARP 캐쉬 테이블에 저장되어있는 모든 호스트 정보를 출력한다.

-s

 ARP 캐쉬 테이블에 저장된 특정 IP에 대한 MAC주소를 변경한다.

-d

 ARP 캐쉬 테이블에 저장된 특정 MAC주소를 삭제한다.

-i

 eth0과 같은 네트워크 인터페이스를 지정한다.

-n

 Resolving을 하지 않은 IP주소를 출력한다.

-v

 자세한 모드(verbose)로 결과를 출력한다. 



8) nslookup: 인터넷 도메인 네임 서버에 사용자가 직접 도메인 이름을 질의할 수 있도록 해주는 프로그램이다.


nslookup의 모드

 비대화형(non-interactive) 모드 - (질의 후 결과를 받음) 

 

 대화형(interactive) 모드 - (대화를 지속하면서 다양한 호스트나 도메인 네임들에 대해 질의 후 결과를 받음) 

 



Non-authoritative answer와 Authoritative answer: 

nslookup에 도메인 네임을 질의하면 보통 "Non-author.."라고 붙어있는데, 이는 현재 사용하고 있는 네임서버에는 해당 도메인에 대한 캐시(Cache)가 저장되있고, 도메인 정보가 갱신 됬을수도 있기 때문에, 잘못된 답이라고 알려주는 것이다. 그래서 믿을한한(Authoritative) 대답을 얻으려면 도메인 관리하는 서버에 직접 질의해야 한다.


 > server 도메인명 // 해당 서버로 변경 후 질의하기

 




검색하고자하는 레코드 고르기

 MX 값 검색 설정

 특정 도메인의 메일서버가 어느 곳에 지정되어 있는지 알기 위해서 검색한다. 

 

 NS 값 검색 설정

 네임서버를 검색하기 위한 값이다. 이 값으로 특정도메인이 어디에 등록되어 있는지 알수있다. 

 

 SOA(Start Of Authority) 레코드

 영역의 시작을 나타내며, 보통 영역 파일 내의 첫번째 레코드이다. 

 이 레코드는 보관하고 있는 해당 도메인에 대해 네임서버가 인증된 자료를 갖고 있음을 의미한다.

 

 origin: 해당 도메인을 위한 주 마스터 네임서버(Primary Name Server)의 호스트 네임

 mail addr: 해당 도메인을 관리하는 관리자의 Email주소(@는 '.'으로 대체 되어 있음)

 serial: 영역 파일의 버전 번호로써 간단한 숫자로 구성된 필드(번호 수정 시 마다, 숫자는 증가)

 refersh: 주 서버의 영역이 업데이트 되었는지 확인하기 전에 부 서버(Secondary Name Server)가 대기하는 시간 (초단위)

 expire: 부 서버가 영역 데이터를 보존하는 기간 (초단위)

 minimum: 영역 데이터가 캐시에 얼마나 오래 남아있어야 할지 명시(초단위)

 NS(Name Server) 레코드

 기본적으로 해당 도메인에 대한 네임서버를 가리킨다. 부가적인 기능으로는 "도메인 위임"을 가능하게 한다.

 

 A(Address) 레코드

 리소스 레코드(RR)의 대부분을 차지하고있는 도메인 네임을 IP주소로 변환하는데 사용한다.

 (기본적으로 설정된 값)

 PTR(Domain Name Pointer) 레코드

 A레코드와는 반대로 IP주소에 대하여 해당 도메인 네임을 돌려준다. 

 > set type=PTR

 > <IP주소>

 ANY 값 검색 설정 

 특정 도메인 네임에 대한 모든 사용 가능한 리소스 레코드들을 검색하기 위해 사용되는 값이다. 

 (MX값과 NS값 전체 다 볼 수 있음)

이외의 레코드

 CNAME(Canonical Name) 레코드: 도메인의 별칭에 대해 원래의 명칭을 보여준다.

 HINFO(Host Information) 레코드: 특정 호스트에 의해 사용되는 HW와 O/S의 설명을 제공한다.

 WKS(Well-Known Services) 레코드: 특정 호스트에 의해 제공되는 네트워크 서비스들의 정보이다.

 TXT(Text) 레코드: 특정 호스트에 의해 제공되는 텍스트에 의한 자유 형식의 정보를 제공한다. 




9) dig: 지정한 DNS서버의 설정 내용과 특정 도메인의 네임서버 설정 내용을 확인하는 명령어이다. nslookup과 거의 같은 역할을 한다.


 # dig [@네임서버] 도메인 [쿼리타입] [+쿼리옵션] 

 쿼리타입에 올수있는 옵션들

  • a: 네트워크 주소를 의미하고, 쿼리타입이 생략된 경우의 기본값이다.
  • any: 지정한 도메인의 모든 정보를 의미한다.
  • mx: 지정한 도메인의 메일서버 정보를 의미한다.
  • ns: 네임서버를 의미한다.
  • soa: SOA 정보를 의미한다.
  • hinfo: HINFO레코드에 대한 정보를 의미한다. 




10) host: 도메인 네임 서버에서 도메인의 설정 정보를 찾기 위한 간단한 유틸리티이다. nslookup과 dig와 마찬가지로 /etc/resolv.conf에 설정된 도메인 네임서버를 기본 네임서버로 인식한다.


 사용법: # host <도메인명>