티스토리 뷰

Linux

Linux, Network기본

hwangyoungjae 2016. 4. 26. 18:11
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

>> Gateway <<

-. 네트워크인터페이스에 기본게이트웨이를 설정하는 형식

route add default gw [게이트웨이ip주소] dev [네트웍인터페이스장치명]

ex)

[root@localhost ~]#route add default gw 10.40.192.1 dev eth0

[root@localhost ~]#route #netstat -nr명령어와 동일

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.40.192.0     *               255.255.255.0   U     0      0        0 eth0

169.254.0.0     *               255.255.0.0     U     0      0        0 eth0

default         10.40.192.1     0.0.0.0         UG    0      0        0 eth0

-. 특정이더넷에 IP주소를 할당하고 라우팅을 설정하는 과정

[root@localhost ~]#ifconfig eth0 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up

[root@localhost ~]#route add -net 192.168.1.0 netmask 255.255.255.0 eth0

[root@localhost ~]#route add default gw 192.168.1.254 dev eth0

 

 

>> 라우팅테이블 <<

[root@localhost ~]#route #netstat -nr

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.40.192.0     *               255.255.255.0   U     0      0        0 eth0

169.254.0.0     *               255.255.0.0     U     0      0        0 eth0

default         10.40.192.1     0.0.0.0         UG    0      0        0 eth0
 라우팅테이블은 요청된 데이터패킷들을 어디로 보낼 것인가를 결정하는 역할을 한다.

 

-. 라우팅테이블의 규칙

규칙1 : 첫번째행부터 시작하여 행단위로 한 행씩 차례대로 읽어서 처리할 패킷을 어디로 보낼것인가를 결정한다.

 

규칙2 : default라는 것은 시스템의 기본 게이트웨이 설정행을 의미하며 그 행의 Gateway항목값이 기본게이트웨이의 IP주소이다그리고 default 0.0.0.0을 의미한다.

 

규칙3 : 보낼 데이터의 목적지 IP주소와 Genmask값과의 AND연산을 해서 그 결과가 해당행의 Destination 항목과 동일 할 경우에 해당행의 Iface항목에 있는 인터페이스로 해당 패킷을 보낸다.

 

규칙4 : Iface항목의 값이 lo인 행은 이 시스템의 루프백데이터를 처리하기 위한 설정이다자기자신에게 데이터를 보낼때에 처리를 담당하는 인터페이스이다.

 

 

>> 네트워크 설정파일 <<

-. /etc/sysconfig/network

현재 시스템의 기본적인 network 설정파일(Hostname,default gateway)

[root@localhost ~]#cat /etc/sysconfig/network

NETWORKING=yes

NETWORKING_IPV6=no

HOSTNAME=localhost.localdomain

GATEWAY=10.40.192.1

 

NETWORKING : 통신이 되도록 지원할 것인가의 여부(yes or no)

 

NETWORKING_IPV6 : IPv6기반의 통신을 지원하려고 할때 사용됨(yes or no)

 

HOSTNAME : 서버의 호스트네임을 설정

 

GATEWAY : 시스템전체에 대한 Global한 기본게이트웨이 IP주소

 

-. /etc/resolv.conf

도메인네임 쿼리를 위한 DNS서버를 지정하기 위한 설정파일

[root@localhost ~]#cat /etc/resolv.conf

search sulinux.net

nameserver 168.126.62.1

nameserver 164.124.101.2

 

위와 같은 형식으로 되어 있으며 1차 네임서버는 168.126.62.1이고, 2차는 164.124.101.2이다.

1차가 응답이 없을경우 2차네임서버로 도메인에 대한 lookup을 진행하게 된다.

search는 기본적으로 사용할 도메인명이다호스트명만을 지정하였을 경우에 호스트명 뒤에 붙게되는 도메인명을search행에서 지정한 도메인명으로 사용한다.

예를 들어 search항목이 sulinux.net경우 "telnet bbs"라고 하였다면 "telnet bbs.sulinux.net"과 같이 bbs라는 호스트명에 sulinux.net이라는 도메인명을 기본으로 사용한다는 의미이다.

 

-. /etc/sysconfig/network-scripts/

네트워크 인터페이스(NIC,ethernet) 설정파일

/etc/sysconfig/network-scripts/ 디렉토리에는 네트워크인터페이스에 관한 파일들이 저장되어 있는 위치이다.

첫번째 인터페이스 설정파일 이름은 ifcfg-eth0이고 두번째는 ifcfg-eth1 이 순서대로 각각 인터페이스 파일들이 존재한다.

 

>> /etc/sysconfig/network-scripts/ifcfg-lo

현재시스템의 루프백주소에 대한 이더넷파일

[root@localhost ~]#cat /etc/sysconfig/network-scripts/ifcfg-lo

DEVICE=lo

IPADDR=127.0.0.1

NETMASK=255.0.0.0

NETWORK=127.0.0.0

BROADCAST=127.255.255.255

ONBOOT=yes

NAME=loopback

 

>> /etc/sysconfig/network-scripts/ifcfg-eth0

첫번째 이더넷장치 설정파일이다.(두번째 이더넷장치 설정파일은 ifcfg-eth1 파일이다.)

[root@localhost ~]#cat /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

ONBOOT=yes

BOOTPROTO=dhcp

HWADDR=08:00:27:96:e7:09

 

DEVICE : 네트워크디바이스장치명리눅스에서는 네트워크장치명을 첫번째는 eth0, 두번째는 eth1 세번째는 eth2등과 같은 순서대로 할당하여 사용한다필요한경우에 다른 Device이름으로 바꿀수도 있다.

 

BOOTPROTO : 이 네트워크 디바이스에 동적IP를 할당하고자 할경우에 dhcp로 설정하고 고정IP를 사용하고자 할경우에는 static으로 설정한다.

 

BROADCAST : Broadcast IP주소를 설정한다. Network가 바뀌엇을 경우에 Broadcast IP주소가 바뀌게 되면 이 값을 바꾸어 주면 된다.

 

HWADDR : 현재 인터페이스의 MAC주소이며이 물리적인 하드웨어주소값가 IP주소가 1:1로 매칭되어 다른 호스트들과 구분된다이 값은 물리적으로 바꾸어서는 안되는 값이다.

 

IPADDR : 이 인터페이스의 IP주소를 의미한다현재 인터페이스의 IP주소를 변경하고자 한다면 이 값을 바꾸어 주면 된다.

 

NETMASK : subnetmask값을 의미하며, subnetmask값이 변경되면 이값을 바꾸어 주면 된다.

 

NETWORK : 이 인터페이스가 속한 네트워크의 IP주소이다. IPADDR NETMASK값의 AND연산값이라고 보면 된다.

 

GATEWAY : 해당 인터페이스의 게이트웨이 설정값여기에 설정된 gateway값은 현재 이 이더넷에 대한 gateway Ip주소이다하나의 시스템에는 여러개의 이더넷이 존재할수 있으므로각각의 이더넷에는 다른 게이트웨이가 설정될수 있다따라서 현재 이 이더넷에 대한 게이트웨이를 설정하고자 한다면 이 값을 바꾸어 주면 된다. /etc/sysconfig/network파일에 설정된 GATEWAY설정보다 이 파일의 GATEWAY값이 우선적용된다.

 

ONBOOT : 해당 인터페이스를 부팅시에 활성화하여 사용할 것인가를 결정하는 설정이다. yes는 부팅시에 활성화하는 것이고 no는 활성화하지 않는것이다.

 

USERCTL : root사용자뿐 아니라 일반사용자들도 이 네트워크 인터페이스를 ON/OFF할수 있는가의 권한설정항목이다. yes로 설정하면 일반사용자도 사용가능하다는것이며, no로 설정하면 일반사용자들은 사용불가능하다는 설정이다.

 

※ 유동IP주소를 사용할 경우는 4가지 항목만 있으면 된다.

DEVICE = eth0 #현재 장치명

BOOTPROTO = dhcp #Dynamic Host Configuration Protocol

ONBOOT = yes #부팅시 현재 네트워크인터페이스 활성화

HWADDR=08:00:27:96:e7:09 #고정값 수동으로 변경하면 안됨

 

-. /etc/rc.d/init.d/network

네트워크 컨트롤 스크립트로서 설정파일을 이용하여 변경된 내용을 적용하는 스크립트이다.

스크립트파일에 restart 옵션을 주면 된다.

[root@localhost ~]#/etc/rc.d/init.d/network restart

Shutting down interface eth0: [ OK ]

Shutting down loopback interface: [ OK ]

Bringing up loopback interface: [ OK ]

Bringing up interface eth0: [ OK ]

/etc/sysconfig/network-scripts/ 디렉토리내에 있는 인터페이스설정 파일들을 모두 다시 읽어서 적용한다.

 

-. IP Alias 기능 사용하기

물리적인 하나의 랜카드에 여러개의 IP주소 할당하는 방법

>> 작업기존 이더넷설정파일을 참고하여 새로운이더넷설정파일 생성하기

[root@localhost /etc/sysconfig/network-scripts]#cp ifcfg-eth0 ifcfg-eth1

[root@localhost /etc/sysconfig/network-scripts]#cp ifcfg-eth0 ifcfg-eth2

[root@localhost /etc/sysconfig/network-scripts]#cp ifcfg-eth0 ifcfg-ethN #N개의 새로운이더넷설정파일 복사

 

>> 작업복사한 이더넷설정파일 내용 수정하기

DEVICE IPADDR만 수정해주면 됨

[root@localhost /etc/sysconfig/network-scripts]#vi ifcfg-eth1

DEVICE=eth0:1 #기존인터페이스 DEVICE명에 콜론(:) 과 숫자(N)를 붙여주면 된다.

IPADDR=192.168.0.3 #새롭게 할당할 IP주소

생략...

[root@localhost /etc/sysconfig/network-scripts]#vi ifcfg-eth2

DEVICE=eth0:2

IPADDR=192.168.0.4

생략...

 

>> 작업네트워크컨트롤스크립트 재시작

[root@localhost ~]#/etc/rc.d/init.d/network restart

Shutting down interface eth0: [ OK ]

Shutting down loopback interface: [ OK ]

Bringing up loopback interface: [ OK ]

Bringing up interface eth0: [ OK ]

Bringing up interface eth1: [ OK ]

Bringing up interface eth2: [ OK ]

 

>> 네트워크설정 변경 및 확인하기(ifconfig) <<

ifconfig명령어를 이용하여 네트워크설정을 변경한후 재부팅을 하면 변경된 내용이 초기화 되므로실제 네트워크주소 변경전 테스트를 하거나확인을 할때 주로 사용될수 있음

 

-. 인터페이스 확인하기

 [root@localhost ~]#ifconfig #옵션을 주지 않은경우 활성화(UP)상태의 인터페이스만을 보여준다.

eth0      Link encap:Ethernet  HWaddr 08:00:27:96:E7:09 

          inet addr:10.40.192.133  Bcast:10.40.192.255  Mask:255.255.255.0

          inet6 addr: fe80::a00:27ff:fe96:e709/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:7597 errors:0 dropped:0 overruns:0 frame:0

          TX packets:1579 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:816199 (797.0 KiB)  TX bytes:203440 (198.6 KiB)

          Base address:0xd270 Memory:f0420000-f0440000

 

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:32 errors:0 dropped:0 overruns:0 frame:0

          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:7199 (7.0 KiB)  TX bytes:7199 (7.0 KiB)

#특정 인터페이스만 확인할경우는 ifconfig eth0 처럼 ifconfig명령어 뒤에 interface명을 넣어주면 된다.

#비활성화(DOWN)상태의 인터페이스도 함께 보려면 ifconfig -a 옵션을 주면 된다.

Hwaddr : MAC주소

inet addr : IP주소

Bcast : broadcast주소

Mask : sunnetmask 

MTU : Maximum Transfer Unit, 하나의 패킷의 최대전송단위이며 이값의 단위는 byte이다고속 인터페이스일수록 이 값이 높다.

RX packets : 부팅후 현재까지 받은 패킷수

TX packets : 부팅후 현재까지 보낸 패킷수

collisions : 충돌된 데이터값

RX bytes : 부팅후 현재까지 받은 패킷량

TX bytes : 부팅후 현재까지 보낸 패킷량

Interrupt : 인터럽트주소

 

-. 인터페이스 활성화 및 비활성화

ifconfig [인터페이스명] [up|down]

[root@localhost ~]#ifconfig eth0 down

위 명령어를 사용하면 eth0장치가 비활성화 된며 다시 활성화 하고싶을땐 up 옵션을 주면 된다.

[root@localhost ~]#ifconfig eth0 up

 

-. 특정 인터페이스 MTU값 변경하기

[root@localhost ~]#ifconfig eth0 mtu 1000

위와 같은 형식으로 mut값을 변경할수 있다.

모든 인터페이스는 물리적으로 MTU상한치를 가지고 있다 상한치 이상의 값을 설정하면 invalid argument 에러를 발생한다(SIOCSIFMTU: Invalid argument)

 

-. 특정 인터페이스의 IP주소와 네트워크 설정하기

ifconfig명령어로 네트워크를 설정할시 인터페이스가 이미 존재해야 하며설정을 해주면 routing table에 자동으로 등록된다.

ifconfig [인터페이스명] [IP주소] netmask [subnetmask] broadcast [브로드캐스트IP] up

ex)

ifconfig eth1 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255 up

 

 

>> routing table(route) <<

리눅스 시스템에는 하나의 네트워크인터페이스만 있어도 정상적인 외부네트워크와 통신은 모두 이루어질수 있다만약 리눅스시스템을 라우터로 사용하려고 한다면 최소한 두개 이상의 네트워크인터페이스가 있어야 할것이다이 경우 각각의 네트워크 인터페이스의 라우팅 경로를 route명령어를 이용하여 설정해주어야 한다.

 

-. route명령어로 주로 하는 작업들..

>>라우팅테이블 확인하기

route 또는 route -n

>> 새로운 라우팅테이블 추가하기

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

route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1

>> 기존 라우팅테이블 제거하기

route del -net [네트워크주소] netmask [넷마스크값] (dev [인터페이스명]) #dev 생략가능

route del -net 192.168.0.0 netmask 255.255.255.0 dev eth1

>> 기본 게이트웨이 추가하기

route add default gw [게이트웨이주소] dev [인터페이스명]

 route add default gw 192.168.0.0 dev eth0

>> 기본 게이트웨이 제거하기

route del default gw [게이트웨이주소] (dev [인터페이스명]) #dev 생략가능

route del default gw 192.168.0.0 dev eth0

>> 루프백 인터페이스 추가하기

route add -net 127.0.0.0 netmask 255.0.0.0 dev lo

 

-. 기본게이트웨이 설정하기

route add default gw [게이트웨이주소] dev [인터페이스명]

위와 같은 형식으로 기본게이트웨이를 설정할수 있음

[root@localhost ~]#route

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

생략...

default         10.40.192.1     0.0.0.0         UG    0      0        0 eth0

위의 설정내용을 보면 현재 서버가 외부와 통신을 할때에는 10.40.192.1 이라는 게이트웨이를 이용하며, eth0이라는 인터페이스를 통하여 통신함을 알수 있다.

Genmask값이 0.0.0.0이 뜻하는것은 위에 설정된 route항목에서 경로선정이 안된 모든 패킷이 바로 default gateway를 통해서 나간다고 보면 된다.

 

-. 새로운 Routing table 추가하기

route add -net [네트워크IP주소] netmask [넷마스크값] dev [인터페이스명]

[root@localhost ~]#route add -net 192.168.1.0 netmask 255.255.255.0 dev eth1

[root@localhost ~]#route

Destination     Gateway              Genmask              Flags      Metric     Ref         Use        Iface

192.168.1.0      *                         255.255.255.0         U           0            0            0            eth1

default           10.40.192.1            0.0.0.0                  UG         0            0            0            eth0

위의 설정인 상태에서 패킷을 내보낼때 목적지주소(IP) Genmask값과 AND연산을 하여 Destination과 결과값이 같으면 행당행의 인터페이스를 통하여 패킷을 내보내게 된다.

, 192.168.1.1 ~ 192.168.1.255 사이의 목적지주소를 가진 패킷은 eth1을 통하여 통신을 한다고 보면 된다.

 

-. 기본게이트웨이 삭제 및 라우팅경로 삭제하기

경로삭제시 단일인터페이스를 통한 라우팅 경로라면 인터페이스명은 생략해도 무관하다.(dev)

route del -net [네트워크IP주소] netmask [넷마스크값] (dev [인터페이스명]) #라우팅경로 삭제

route del default gw [기본게이트웨이 주소] (dev [인터페이스명]) #기본게이트웨이 삭제

 

 

>> 서비스연결상태확인(netstat) <<

시스템 보안점검에 유용한 시스템과 연결된 여러가지 세션정보들을 확인할수 있음.

네트워크연결상태 확인뿐아니라 시스템 라우팅테이블확인네트워크 인터페이스 사용 통계 확인마스커레이드 연결 확인그리고 멀티캐스팅등과 같은 현재 시스템의 네트워크에 관한 다양한 정보확인을 할수 있음.

"어떤 호스트(또는 서버)들과 어떤 서비스로 어떻게 연결되어 있는가를 확인하고 또한 그 연결상태가 어떠한가?"에 대한 정보들을 알수 있음.

1. 어떤 클라이언트와 연결되었는가?

2. 어떤 서비스(www,ftp,mysql,ssh)로 연결되었는가?

3. 어떤포트번호로 연결되었는가?

4. 연결상태(wait, listen, connect)는 어떠한가?

5. 네트워크 연결상태가 어떻게 되어 있는가?

6. 기본게이트웨이의 설정이 제대로 되어있는가?

7. route에서 처럼 라우팅경로는 어떠한가?

 

-. netstat의 주요옵션

-a : --all : listen되는 소켓정보와 listen되지 않는 소켓정보 모두 출력

-n : --numeric : 10진수의 수치정보로 결과를 출력

-r : --route : 설정된 라우팅정보를 출력

-p : --program : 실행되고 있는 각 프로그램과 PID정보를 출력

-i : --interface=[iface] 모든 네트워크 인터페이스정보를 출력 #특정네트워크인터페이스를 지정할수도 있음

-c : --continuous : netstat 결과를 연속적으로 출력함

-l : --listening : 현재 listen되고 있는 소켓정보를 출력

-s : --statistics : 각 프로토콜에 대한 통계정보를 출력

 

-t : 도움말에는 나와있지 않다인터넷을 뒤져도 나오지 않는다하지만 내가 확인해본바에 따르면 터미널정보만을 보여주는것 같긴 하다

 

-. netstat state항목값

비어있음 : 연결되어있지 않음

FREE : 소켓은 존재하지만 할당되어 있지 않음

LISTENING : 외부 연결요구에 응답준비가 되어 있는 상태

CONNECTING : 연결이 막 이루어진 상태

DISCONNECTING : 연결해제되고 있는 상태

UNKNOWN : 알수 없는 연결 , 아려지지 않은 연결상태

LISTEN : 연결가능하도록 관련데몬이 떠있으며 연결이 가능함을 나타냄

SYS-SENT : 연결을 요청한 상태

SYN-RECEIVED : 연결요구에 응답을 한후에 확인메시지를 기다리고 있는 상태

ESTABLISHED : 앞의 3단계 연결과정이 모두 종료된후에 연결이 완료된 상태

FIN-WAIT1, CLOSE-WAIT, FIN-WAIT2 : 연결종료를 위해 종료요청을 받은 후의 종료과정

CLOSING : 전송된 메시지가 유실된 상태를 나타냄

TIME-WAIT : 연결종료 후에 한동안 유지하고 있는 상태

CLOSED : 연결이 완전히 종료됨.

 

※ /etc/services : 포트가 어떤 서비스에 사용되는가를 정의해둔 텍스트파일

 

-. 특정IP주소의 시스템과 연결된 정보만을 출력하고 읽기

[root@localhost /var/ftp]#netstat -anp | grep 10.40.192.53

tcp        0      0 10.40.192.133:21            10.40.192.53:9692           ESTABLISHED 18664/proftpd: root

 

사용 프로토콜 : tcp

서버 IP주소 및 포트 : 10.40.192.133:21

클라이언트IP주소 및 포트 : 10.40.192.53:9692

연결상태 : ESTABLISHED

Process정보 : 18664/proftpd: root

 

 

>> ping 테스트 <<

-. ping 주요 옵션

-q : 과정출력은 생략결과만 출력함

-b : 타켓IP와 동일한 네트워크에 있는 모든 호스트로 패킷을 보냄, Broadcasting

-s [size] : 패킷사이즈(기본값 56byte)

-i [second] : 지연시간초단위로 지정

-c [count] : 테스트할 횟수

-w [second] : 테스트할 시간이며, -c옵션과 함께 사용 못함

 

-. ping 테스트결과 확인

[root@localhost ~]#ping 10.40.192.85 -c 3

PING 10.40.192.85 (10.40.192.85) 56(84) bytes of data.

64 bytes from 10.40.192.85: icmp_seq=1 ttl=128 time=0.434 ms

64 bytes from 10.40.192.85: icmp_seq=2 ttl=128 time=0.708 ms

64 bytes from 10.40.192.85: icmp_seq=3 ttl=128 time=0.727 ms

 

--- 10.40.192.85 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2001ms

rtt min/avg/max/mdev = 0.434/0.623/0.727/0.133 ms

64 bytes from 10.40.192.85: icmp_seq=1 ttl=128 time=0.434 ms

사이즈 64byte짜리 패킷을 10.40.192.85로 보냈으며 sequence number 1 응답한 패킷의 time to live 128 응답까지 걸린시간은 0.434ms

총 결과에서는

3개의 패킷을 보냈으며 3개를 받았고 0%의 패킷이 손실됬다총 테스트한 시간은 2001ms(2)

패킷이 응답하는데 걸린 최소시간은 0.434ms, 평균시간은 0.623ms, 최대시간은 0.727ms

 

 

>> 라우팅경로 및 구간 통신상태 점검(traceroute) <<

지정된 대상 호스트 또는 네트워크장비까지 어떤 경로를 거쳐서 통신이 이루어지는가를 확인함

 

-. traceroute를 통해서 얻을수 있는 정보

1. 대상 호스트까지 통신이 잘 이루어지고 있는가?

2. 대상 호스트까지 몇개의 hop(거쳐가는 게이트웨이 수)를 거쳐 통신이 되고 있는가?

3. 대상 호스트까지의 통신에 있어 지연되는 구간은 없는가지연되는 구간이 있다면 어떤 구간이며원인은 무엇인가?

4. 대상 호스트까지의 통신경로상에 있는 특정 구간의 정보확인

 

traceroute명령어로 대상호스트까지의 경로를 확인하는도중 이상이 있는 부분은 * 로 표시되며 whois명령어를 이용하여 해당 구간의 정보를 확인해볼수도 있다.

※ whois [IP]

 

 

>> 이더넷카드 설정 및 확인하기(mii-tool,ethtool) <<

-. mii-tool

리눅스 시스템의 네트워크 인터페이스의 설정상태 확인

[root@localhost ~]#mii-tool

eth0: no autonegotiation, 100baseTx-FD, link ok

eth0 인터페이스는 100MB속도로 전이중모드(Full Duplex)로 정상(link ok)적으로 동작중임을 알수 있다.

 

>> 옵션

-v : 네트워크 인터페이스에 대한 autonegotiation ON/OFF 설정내용과 속도 및 Duplex모드등의 자세한 내용을 알수 있음

[root@localhost ~]#mii-tool -v

eth0: no autonegotiation, 100baseTx-FD, link ok

  product info: vendor 00:50:43, model 2 rev 4

  basic mode:   autonegotiation enabled

  basic status: autonegotiation complete, link ok

  capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD

  advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control

  link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD

 

-R : 네트워크 인터페이스의 기본설정대로 MII(Media Independent Interface)를 재설정한다.

[root@localhost ~]#mii-tool -R

resetting the transceiver...

 

-r : 네트워크 인터페이스의 autonegotiation설정을 재시작한다.

[root@localhost ~]#mii-tool -r

restarting autonegotiation...

 

-w : 네트워크인터페이스를 계속 모니터링하면서 연결상태의 변화가 있을경우 변경되는 내용을 알려준다. Ctrl + C를 누르면 종료된다..

[root@localhost ~]#mii-tool -w

03:45:15 eth0: no autonegotiation, 100baseTx-FD, link ok

 

-. ethtool

네트워크 인터페이스의 속도와 Duplex모드 설정을 할수 있다.

ethtool을 이용하여 할수 있는 작업요약

1. 속도설정 문제에 있어서 10M, 100M, 1G로 설정할 것인가?

2. 전송모드에 있어서 half duplex 또는 full duplex로 설정할것인가?

3. 장비간 인식방식을 직접 설정할 것인가? auto모드(negotiation)로 할 것인가?

위 세가지 설정을 알맞게 해준다면 장비간의 문제로 인한 속도저하 문제를 해결할수 있을것이다.

 

>> 네트워크 인터페이스의 속도 및 전송모드 확인하기

ethtool [인터페이스명]

[root@localhost ~]#ethtool eth0

Settings for eth0:

    Supported ports: [ TP ]

    Supported link modes:   10baseT/Half 10baseT/Full

                            100baseT/Half 100baseT/Full

                            1000baseT/Full

    Supports auto-negotiation: Yes

    Advertised link modes:  10baseT/Half 10baseT/Full

                            100baseT/Half 100baseT/Full

                            1000baseT/Full

    Advertised auto-negotiation: Yes

    Speed: 1000Mb/s

    Duplex: Full

    Port: Twisted Pair

    PHYAD: 0

    Transceiver: internal

    Auto-negotiation: on

    Supports Wake-on: d

    Wake-on: d

    Current message level: 0x00000007 (7)

    Link detected: yes

 

Supported link modes

현지원 가능한 링크모드(속도와 전송모드), 위에서 보면 eth0 인터페이스가 1G까지 지원이 가능하다는 것을 알수 있다.

Supports auto-negotiation

자동협상인식기능의 지원여부, Yes로 되어 있으면 상대편 네트워크인터페이스와 협상을 통하여 자동설정기능이 지원된다는 것을 알수 있다.

지원하고 있느냐의 여부는 아래에 Auto-negotiation: on 를 보고 알수 있다.

Speed

네트워크 인터페이스의 설정속도

Duplex

네트워크인터페이스의 전송모드

Auto-negotiation

자동협상인식기능을 지원하고 있을때에 실제로 자동협상에 의해 이더넷설정을 할것인가를 결정함,

 

>> 속도 및 전송모드 재설정하기

ethtool –s [인터페이스명] speed [10|100|1000] duplex [half|full] autoneg [on|off]

# speed,duplex,autoneg 3개중 한가지만 입력할수도 있음

ex)

[root@localhost ~]#ethtool –s eth0 speed 100 duplex half autoneg off

 

 

>> 패킷 캡쳐하기 (tcpdump) <<

지정한 네트워크 인터페이스로 송수신되는 데이터의 패킷전체 혹은 패킷헤드만을 모니터링하거나 덤프할수 있음.

tcpdump로 할수 있는 것

1.     특정 인터페이스를 거쳐가는 모든 패킷의 헤드를 캡쳐

2.     특정 인터페이스을 거쳐가는 패킷전체를 캡처

3.     이 시스템과 원격지 대상 호스트사이에 송수신되는 패킷헤더 혹은 패킷전체 캡처

4.     이 시스템과 원격지 대상호스트간의 모든 패킷들 가운데 특정 포트 혹은 특정 서비스로만 송수신되는 패킷 캡쳐

5.     패킷을 캡쳐하여 특정 파일에 저장할수 있으며파일내용 확인은 –r옵션을 사용하여 확인가능함

특정 옵션을 주지 않고 tcpdump만 사용했을경우 모든 인터페이스로 다니는 모든 패킷을 캡쳐하며 Ctrl + C를 이용하여 종료해주어야 한다.

 

-. 덤프내용 파일로 저장하고 읽기

tcpdump –w [파일명] : 덤프내용 파일로 저장하기 #Ctrl + C로 종료

tcpdump –r [파일명] : 저장된 덤프파일 읽기

텍스트형식으로 저장되지 않기 때문에 cat이나 vi로는 확인할수 없음

ex)

[root@localhost ~]#tcpdump -i eth0 -w eth0tcpdump

tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

#Ctrl + C

54 packets captured

109 packets received by filter

0 packets dropped by kernel

 

[root@localhost ~]#tcpdump -r eth0tcpdump

생략...

 

※ 출력내용을 파일로 지정하여 저장하는 > 문자를 이용하여 파일로 저장하면 vi cat으로 확인할수 있다.

tcpdump > tcpdump.txt 라고 명령어를 사용하면 덤프내용이 tcpdump.txt파일에 저장되며 cat이나 vi로 언제든지 확인이 가능하다.

-w,-r옵션보다는 이방법이 많이 사용될듯 함.

 

-. 특정 네트워크 인터페이스로 송수신되는 패킷헤더 덤프하기

-i 옵션을 이용하여 특정 인터페이스 지정

tcpdump –i [인터페이스명]

[root@localhost ~]#tcpdump -i eth0

04:10:31.572078 IP 10.40.192.133.ssh > 10.40.192.85.5710: P 70764:70976(212) ack 1 win 7968

04:10:31.572214 IP 10.40.192.133.ssh > 10.40.192.85.5710: P 70976:71108(132) ack 1 win 7968

04:10:31.572383 IP 10.40.192.53.5937 > 10.40.192.85.ms-wbt-server: . ack 73358 win 15252

04:10:31.572392 IP 10.40.192.53.5937 > 10.40.192.85.ms-wbt-server: . ack 75551 win 14704

04:10:31.572400 IP 10.40.192.85.5710 > 10.40.192.133.ssh: . ack 71108 win 51759

04:10:31.572410 IP 10.40.192.85.ms-wbt-server > 10.40.192.53.5937: P 75551:76620(1069) ack 37 win 65267

04:10:31.572599 IP 10.40.192.133.ssh > 10.40.192.85.5710: P 71108:71608(500) ack 1 win 7968

04:10:31.572745 IP 10.40.192.133.ssh > 10.40.192.85.5710: P 71608:71740(132) ack 1 win 7968

04:10:31.572929 IP 10.40.192.133.ssh > 10.40.192.85.5710: P 71740:71872(132) ack 1 win 7968

생략...

 

-. 지정한수 만큼의 패킷캡쳐

-c 옵션을 이용하여 지정한 수만큼만 패킷캡쳐하기

tcpdump –c [Num]

[root@localhost ~]#tcpdump -c 5

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes

04:20:24.443870 IP 10.40.192.133.ssh > 10.40.192.85.5710: P 3617244942:3617245058(116) ack 2378979311 win 13280

04:20:24.448757 IP 10.40.192.85.5710 > 10.40.192.133.ssh: . ack 116 win 65315

04:20:24.449029 IP 10.40.192.133.ssh > 10.40.192.85.5710: P 116:232(116) ack 1 win 13280

04:20:24.444870 IP 10.40.192.133.33148 > office.cdnetworks.pri.domain:  5527+ PTR? 85.192.40.10.in-addr.arpa. (43)

04:20:24.446684 IP office.cdnetworks.pri.domain > 10.40.192.133.33148:  5527 NXDomain* 0/1/0 (102)

5 packets captured

22 packets received by filter

0 packets dropped by kernel

 

-. 지정한 길이만큼의 패킷캡쳐

-s 옵션을 이용하여 패킷사이즈에서 지정한 사이즈만큼만 캡쳐하기

tcpdump -s [byte]

[root@localhost ~]#tcpdump -s 1000

생략...

각각의 인터페이스에 설정된 MTU값이 인터페이스별 기본값이 된다.

 

-. 특정포트와 호스트의 패킷만 캡쳐

tcpdump tcp port 22 #22(ssh) 포트를 통하는 패킷만 캡쳐

tcpdump host [HOST] #지정된 호스트와 송수신되는 패킷만 캡쳐

※ grep 명령어를 이용할수도 있음

 

-. 패킷을 16진수 형식으로 보기

-X옵션으로 헤더값만이 아닌 전체 패킷을 16형식(HEX)으로 볼수 있음.

–r 옵션과 함께 사용할수도 있다.

 

-. tcpdump의 여러가지 사용 방법

>> 192.168.0.5와 송수신되는 패캣들을 HEX로 출력시켜 텍스트형식파일로 저장하기

tcpdump –X –i 192.168.0.5 > tcpdump.txt

 

>> 패킷최대크기를 1000byte, 포트는 22번포트호스트는 192.168.0.5 를 통한 패킷을 파일로 저장하기

tcpdump –s 1000 tcp port 22 and host 192.168.0.5 –w tcpdump.txt

 

>> 이전에 파일로 저장했던 덤프파일을 HEX형태로 읽기

tcpdump –Xr tcpdump.txt 혹은

tcpdump –X –r tcpdump.txt 혹은

tcpdump –Xqnr tcpdump.txt

 

※ –w 옵션을 이용하여 저장된 내용은 패킷전체가 저장되어 있으며, X옵션을 주지 않으면 기본적인 헤드정보만 출력된다. X옵션은 패킷을 캡쳐할때와는 전혀 상관이 없으며 출력하고만 상관있다

 

 

>> 동일네트워크내에 존재하는 호스트정보확인하기(arp) <<

arp명령어는 리눅스의 /proc/net/arp 파일에 보관된 ARP정보를 참조하여 동일네트워크내에 호스트에 대한 IP주소와 MAX주소 정보를 출력하는 역할을 한다.

 

-. ARP(Address Resolution Protocol) RARP(Reverse ARP)의 이해

흔히 사용하는 SSH,FTP 또는 WWW등의 모든 인터넷 서비스들을 이용하여 다른 서버와 통신할때에 서버의 IP를 가지고 통신하지만물리적인측면에서의 실제통신은 IP주소를 통하는 것이 아닌 HW address(MAC주소)를 이용하여 실제 통신이 이루어진다, ARP라는 프로토콜을 이용하여 IP주소를 MAC주소로 매칭한후에 실제 통신은 MAC주소를 통하여 이루어진다.

반대로 MAC주소를 가지고 IP주소와 매칭시키는 과정을 RARP라고 한다.

ARP : IP를 가지고 MAC주소와 매칭할때

RARP : MAC주소를 가지고 IP와 매칭할때

 

통신을 원하는 서버에서 현재 네트워크내의 모든 서버들에게 “ARP Request”라고 하는 패킷을 송신한다그리고 이 패킷에는 통신하고자 하는 IP주소가 포함되어 있으며 이 패킷을 받은 호스트들 가운데 해당 IP주소에 해당하는 호스트는 자신의 MAC주소를 송신한 서버에게로 보내게 되는에 이를 “ARP Reply”라고 한다.

이렇게 두 서버간의 ARP를 이용한 통신대상서버의 확인이 완료되면 이후부터는 IP주소가 아닌 MAC주소를 이용하여 SSH,FTP,WWW등의 통신이 이루어지게 되는 것이다.

 

내가 사용하는 시스템은 IP가 아닌 실제 게이트웨이의 MAC주소를 이용하여 통신하며 게이트웨이는 다른 게이트웨이 혹은 다른 호스트와 MAC주소를 이용하여 통신한다는것이다.

[host A]---[Gateway1]---[Router]---[Gateway2]---[host B]

위와같은 구조의 네트워크에서 host A host B가 통신을 하려할때, host A gateway1  arp를 이용하여 mac주소를 알아낸뒤 mac주소를 통하여 gateway1로 패킷을 보내고 gateway1 또한 route arp를 이용하여 mac주소를 알아내고 mac주소를 이용하여 실제 통신이 이루어진다.

통신할때마다 arp요청을 하게되면 트래픽과부하가 있을수 있으므로각각의 node에서는 arp table에 이전에 통신했던 host의 MAC주소를 저장해두며특정시간이 지나면 삭제하게 된다.

 

-. arp명령어의 주요 옵션

arp [host] : 특정호스트만을 확인하고 싶은경우 arp 뒤에 호스트명 혹은 IP를 넣어주면 됨

-a : arp테이블에 저장되어 있는 모든 호스트정보를 출력

-s : arp테이블에 저장되어 있는 특정IP에 대한 MAC주소를 변경

-d : arp테이블에 저장되어 있는 특정 MAC주소를 삭제

-i : 지정한 네트워크인터페이스의 ARP를 출력

-n : Resolving을 하지 않은 IP주소로 출력

-t : HW타입(ethernet타입)에 맞는 호스트정보 확인

-v : 보다 자세하게 출력

 

※ /etc/hosts 파일에 호스트명과 매칭되는 아이피가 있어야만 arp에서 해당 호스트를 호스트명으로 확인할수 있음

 

 

참조 : 리눅스 서버관리 실무 바이블 3.0(박성수 저) 

'Linux' 카테고리의 다른 글

Linux, 사용자(user) 확인하기  (0) 2016.04.26
Linux, 시스템 날짜와 시간관리  (0) 2016.04.26
Linux, 리눅스 부팅과정  (0) 2016.04.26
Linux, 부팅레벨(Run level)  (0) 2016.04.26
Linux, file명령어 & strings명령어  (0) 2016.04.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함