본문 바로가기

Linux

네트워크의 설정

환경설정

 

1) 리눅스 네트워크 환경설정의 개요

 

1. 리눅스 네트워크 호환성

대부분의 네트워크 디바이스와 호환

 

2. 리눅스 네트워크의 다양성

네트워크의 기본 ethernet 은 기본으로 제공하고, slip, ppp, x.25, wlan, can, fddi, bluetooth, zigbee, 6lowpan 등 다양한 네트워크 기능 제공.

 

2) 인터넷 접속을 위한 이더넷 카드 Ethernet card 설치하기

이더넷 카드 드라이버는 기본으로 설정되어 별도의 작업이 필요없지만 최신 이더넷카드의 경우 다운받아 설치하여야 함. 드라이버를 다운받은후 modprobe 나 insmod를 통해 드라이버를 시스템에 로드.

/etc/modprobe.d 디렉터리 안에 설정 필요.

 

압축해제
$tar e1000e.tar.gz
디렉토리 이동후 소스코드 빌드라고 드라이버를 설치
$make clean
$sudo make install
시스템에 드라이버 로드
$sudo modprobe e1000e

 

3) 인터넷 접속을 위한 네트워크 인터페이스 설정 방법

 

1. GUI 기반 네트워크 설정

X윈도우 상단패널 네트워크 설정에 진입 or 터미널에 입력 $nm-connection-editor &

DHCP서버에서 IP주소를 자동으로 받아오려면 Automatic(DHCP)

사용자가 직접 IP주소와 넷마스크 게이트웨이를 입력하려면 Menual

 

2. 텍스트기반 네트워크 설정

$sudo setup 

or

$system-config-network

네트워크 설정후

설정화면에서 빠져나와 네트워크 재시작

$sudo service network restart

 

3. 명령어를 통한 IP 수동 설정

ifconfig명령어로 IP수동 설정

#ifconfig eth0 192.168.100.100

 

eth0 인터페이스에 IP주소 및 넷마스크, 브로드 캐스트 주소 함께 입력

#ifconfig eth0 192.168.100.100 netmask 255.255.255.0 broadcast 192.168.100.255

 

접두어 길이 표현법으로 입력

#ifconfig eth0 up

 

설정한값은 시스템을 리부팅, 네트워크 서비스를 재시작하면 수동설정값은 지워짐.

 

라우팅 테이블에 게이트웨이 주소 추가

#route add default gw 192.168.100.1

 

4. 네트워크 설정 파일을 통한 IP 수동 설정

 

설정파일을 통해 설정 수행후 네트워크 서비스 재시작.

네트워크 설정파일 설명
/etc/sysconfig/network-scripts/ifcfg-eth0 #설정대상이 되는 이더넷 인터페이스
DEVICE = eth0
#IP할당방법을 설정. 수동은 static, 동적 설정은 dhcp기입
BOOTPROTO=static
#이더넷카드의 MAC주소
HWADDR=xxx.xx.xx.xx.xx
#브로드캐스트 주소
/etc/sysconfig/network-scripts/ifcfg-eth0 eth0 장치에 대한 DCHP 사용여부 관리
/etc/sysconfig/network 시스템의 기본 게이트웨이 주소, 호스트명, 네트워킹 연결 허용여부 설정하는 파일
/etc/resolv.conf 시스템에서 사용하는 네임서버의 IP를 설정하는 파일
/etc/hosts IP주소와 도메인 이름간의 매핑 테이블

편집하여 ip주소, 브로드캐스트 주소, 게이트웨이 정보 등 입력

#vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=static
NM_CONTROLLED="yes"
ONBOOT=yes
IPADDR=192.168.100.152
BROADCAST=192.168.100.255
GATEWAY=192.168.100.1

/etc/sysconfig/network시스템 전역으로 적용할 정보 입력

#vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=fransic.com
GATEWAY=192.168.100.1

/etc/resolv.confDNS서버주소와 기본으로 사용할 도메인 이름 설정

#vi /etc/resolv.conf

#Generated by NetworkManager
search fransic.com
nameserver 192.168.100.2
nameserver 192.168.100.3

/etc/hosts 를 통해 도메인 매핑 설정

$cat /etc/hosts

127.0.0.1 localhost
192.168.100.150 my.fransic.com

네트워크 설정 명령어

 

1) ifconfig

 

1. 설명

- 네트워크 인터페이스에 대한 환경설정 수행

- 보통 시스템이 시작된 후 네트워크 설정을 조절하기위해 사용

- 옵션없이 사용하면 현재 네트워크 정보 보여줌

- 옵션 -a 주면 모든 네트워크 설명을 볼수 있음.

 

2. 형식

ifconfig [interface]
ifconfig interface options | address ...

 

3. 네트워크 설정보기

항목 설명
Link encap 네트워크 인터페이스의 유형
Hwaddr 이더넷 카드의 MAC 주소
inet addr IP 주소
Bcast 브로드캐스트 주소
Mask 넷마스크 주소
UP 인터페이스 활성화 상태
BROADCAST 브로드캐스트 사용
RUNNING 인터페이스 동작 중
MULTICAST 멀티캐스트 사용 기능
MTU MTU(Maximum Transmission Unit) 설정값
Metric 라우팅 정보로서 거리값
RX/TX RX는 수신 패킷이고, TX는 송신 패킷
Collisions 충동 패킷 개수

 

4. 모든 네트워크 인터페이스의 설정 보기

$ifconfig -a

 

5. 특정 네트워크 인터페이스의 설정 보기

#ifconfig eth0

 

6.특정 네트워크 인터페이스 활성화 및 비활성화 하기

네트워크 인터페이스가 활성화되야 그 시점부터 통신 시작.

- 네트워크 활성화 up 키워드

$ifconfig eth0 up

-네트워크 인터페이스 비활성화 down 키워드

$ifconfig eth0 down

 

7. 네트워크 설정하기

- 고정 IP 설정

$ifconfig wlan0 192.168.100.100

- 넷마스크를 설정

$ifconfig wlan0 netmask 255.255.255.0

- 브로드캐스트 주소 설정

$ifconfig wlan0 broadcast 192.168.100.253

- IP 주소, 넷마스크, 브로드캐스트 주소를 한번에 변경

$ifconfig wlan0 192.168.100.100 netmask 255.255.255.0 broadcast 192.168.100.253

- IP 주소, 넷마스크, 브로드캐스트 주소를 한번에 변경하면서 인터페이스 활성화

$ifconfig wlan0 192.168.100.100 netmask 255.255.255.0 broadcast 192.168.100.253 up

 

2) route

 

1. 설명

시스템에 설정된 라우팅 테이블을 표시하거나 수정

패킷 목적지 주소와 넷마스크를 AND 연산하여 알아낸 네트워크 주소와 라우팅 테이블에 매칭되는 경로가 있으면 

해당 경로에 설정된 네트워크 인터페이스를 통해 패킷 라우팅

 

2. 형식

route
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] lf]
route del [-net|-host] target [netmask Nm] [[dev] lf]

 

3. 라우팅 테이블 출력하기

아무런 옵셥없이 명령어를 입력하면 시스템 라우팅 테이블 정보 보여줌.

-n 옵션을 사용하면 심볼을 출력하지 않고 있는 그대로 숫자 표시.

 

라우팅 테이블 정보

항목 설명
Destination 목적지 호스트나 네트워크의 주소
Gateway 외부 네트워크와 연결되어 있는 게이트웨이 주소
Genmask 패킷의 목적지 주소에서 네트워크 주소를 계산하기 위한 넷마스크 주소. '0.0.0.0'이나 '*'인 경우 내부 네트워크.
Flags 라우팅 경오릐 플래그
U : 라우팅 정보가 유효함
H : 목적지가 호스트
G : 목적지로 가려면 게이트웨이 경유 필요
D : 데몬 또는 ICMP 리다이렉트 메세지를 통해 설치된 상태 
M : 데몬 또는 ICMP 리다이렉트 메세지를 통해 수정된 상태
Metric 목적지 호스트나 네트워크까지 도달하기 위한 비용을 숫자로 환산한 특정 값을 의미. 결국 라우터는 최적의 경로를 찾기 위해 Metric이 작은 값을 선택함.
Ref 경로를 참조한 횟수
Use 경로를 탐색한 횟수
Iface 목적지 네트워크나 호스트로 패킷을 내보낼 네트워크 인터페이스

 

4. 디폴트 게이트웨이 추가 및 삭제하기

add 옵션을 사용하고 default gw 옵션을 사용하여 디폴트 게이트웨이 추가

#route add default gw 10.0.2.2 dev eth0

 

del 옵션을 사용하여 디폴트 게이트웨이 삭제

#route del default gw 10.0.2.2

 

5. 특정 네트워크에 대한 라우팅 정보 추가 및 삭제하기

-net 옵션과 netmask 옵션을 사용하여 특정 네트워크를 목적지로 하는 라우팅 정보 추가

#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

 

6. 특정 호스트에 대한 라우팅 정보 추가 및 삭제하기

-host 옵션을 사용해 특정 호스트를 목적지로하는 라우팅 정보 추가

#route add -host 10.0.2.50 dev eth0

 

del 옵션과 -host 옵션을 사용하여 특정 호스트를 목적지로 하는 라우티 정보 삭제

#sudo route del -host 10.0.2.50 eth0

 

3) arp

 

1. 설명

- 이더넷 기반 IP 통신을 위해 호스트 주소를 랜카드의 HW 주소, 즉 MAC 주소로 변환하는것이 필요.

- 호스트 주소에 대한 MAC 주소를 알아내기 위해 ARP 프로토콜을 사용하는데 이때 알아낸 MAC 주소를 ARP캐시에 저장.

 

2. 형식

arp [-a] [hostname]
arp -s hostname hwaddr
arp -d hostname

 

3. arp캐시보기

arp 명령을 사용해 ARP캐시 확인

-e 옵션을 사용해 BSD 스타일로 확인

-a 옵션을 사용해 리눅스 스타일로 확인

 

4. arp 캐시에 정보 추가 및 삭제하기

-s 옵션을 사용해 ARP캐시에 직접 ip주소와 mac주소를 입력

$app -s 10.0.2.3 11:22:33:44:55:66

 

-d옵션을 사용해 ARP캐시에 특정 IP주소의 정보를 삭제

$arp -d 10.0.0.2.3

 

5. 그 밖의 옵션

-n 옵션은 출력정보를 도메인주소대신 IP주소로 출력

-v 옵션은 관련 정보를 자세하게 출력


네트워크 진단 명령어 

 

1) ethtool

 

1. 설명

네트워트 인터페이스 카드를 위한 설정도구

네트워크 속도 포트, 자동설정과 같은 네트워크 카드 설정 변경

 

2. 형식

ethtool [options] interface

 

3. 예제

네트워크 인터페이스 정보보기

$ethtool eth0

 

드라이버 정보 보기

$edhtool -i eth0

 

통계정보 보기

ethtool --statistics eth0

 

네트워크 인터페이스 설정 변경

$ethtool --change eth0 speed 100 duplex full autoneg off

 

2) ip

 

1. 설명

시스템의 네트워크 인터페이스에 주소를 할당하거나 파라미터 설정 기능을 수행하는 ifconfig를 대체하는 명령어

 

2. 형식

ip [option] [command] [address] [dev interface]

 

3. 주요옵션

route 라우팅 테이블에 항목을 추가하거나 삭제

addr 네트워크 인터페이스의 IP정보를 출력

link 네트워크 인터페이스 상태를 설정

neighbor ARP 캐시를 관리

 

4. 네트워크 인터페이스의 정보 출력

$ip addr

$ip addr show

$ip addr list

 

5. 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 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

 

5. 네트워크 인터페이스의 ARP 캐시 관리

ARP 캐시 정보를 출력

$ip neighbor show

 

캐시정보 추가

#ip neighbor add 192.168.101.10 lladdr 11:22:33:44:55:66 dev eth0 nud perm

 

캐시정보 삭제

#ip neighbor del 192.168.101.10 dev eth0

 

6. 라우팅 정보 관리

라우팅 정보 출력

$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

 

3) ping 

1. 설명

ICMP(Internet Control Message Protocol)을 이용한 네트워크 상태 진단 도구

원격의 호스트가 네트워크에 연결된 상태인지 확인하고 네트워크 지연시간도 측정.

 

2. 형식

ping options hostname|address

 

3. 주요 옵션

호스트이름이나 IP주소만 입력하여도 ping을 보낼 수 있지만 다양한 옵션을 사용하여 ping 전송횟수, 

ping 전송간격, ping 데이터 크기 등을 설정

옵션 설명
-c count ping을 보낼 횟수
-i interval ping을 보낼 시간 간격(초)
-s size ping을 보낼 데이터의 크기
-f 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 응답시간을 의미. 시간이 짧을수록 네트워크 상태가 좋거나 거리가 가깝다는 의미.

 

4)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 주소 패밀리를 지정
-c,--continuous 매 초마다 계속적으로 정보를 출력
-p,--program 소켓과 연관된 프로그램 이름과 프로세스 아이디를 출력
-l,--listening Listen 소켓에 대한 정보를 출력
-a,--all Listen 소켓과 소켓이 아닌경우 모두 정보를 출력
-t TCP 소켓의 정보를 출력
-u UDP 소켓의 정보를 출력
-g 멀티캐스트 그룹 멤버십의 정보를 출력

4. 연결되어있는 모든 소켓 정보 출력

-a 옵션을 통해 연결되어 있는 모든 소켓정보를 출력하고

-n 옵션을 통해 호스트 명이나 포트명과 같은 심볼릭 이름을 사용하지 않고 숫자로 출력.

$netstat -an

 

5. 라우팅 정보 출력하기

-r옵션을 사용하여 라우팅 정보 출력

$netstat -rn

 

6. 특정주소 패밀리에 대한 정보만 출력

--inet 또는 -A inet 옵션을 통해 IPv4 정보 출력

$netstat -A inet

 

--inet6 또는 -A inet6 옵션을 통해 IPv6 정보 출력

$netstat -A inet6

 

5) traceroute

1. 설명

네트워크 장애 분석을 위해 패킷이 어떤 경로로 전송이 되는지 추적하기 위한 명령어

 

2. 형식

traceroute hostname | address

 

3. 특정사이트에 어떤 경로로 패킷이 전달되는지 추적

도메인에 대한 라우팅 과정을 출력

$traceroute www.google.com  

8.8.8.8에 대한 라우팅 과정 출력

$traceroute 8.8.8.8

4. 다양한 바식을 통해 경로 추적하기

-I 옵션을 사용해 icmp 방식으로 경로 추적

#traceroute -I www.google.com   

 

-T옵션을 통해 TCP방식이나 -U옵션을 통한 UDP방식으로 경로 추적

#traceroute -T 8.8.8.8

#traceroute -U 8.8.8.8

 

6) mii-tool

 

1. 설명

네트워크 인터페이스의 연결상태를 확인하고 설정을 변경하는데 사용하는 도구

 

2. 형식

mii-tool [option] interface

 

3. 네트워크 인터페이스로 정보 출력

-v 옵션을 사용해 네트워크 인터페이스의 상세정보를 출력

#mii-tool -v eth0

 

4. 네트워크 인터페이스 정보 출력

-r옵션을 사용해 네트워크 인터페이스를 재시작

#mii-tool -r eth0

 

5. 네트워크 인터페이스 설정변경

#mii-tool -v -F 100vaseTx-FD eth0

 

7) ss 

 

1. 설명

소켓에 대한 정보를 제공해주는 도구

 

2. 형식

ss [option][filter]

 

3. 옵션

-n --numeric 서비스 이름 대신 숫자로 표기
-r --resolve 숫자 형태의 IP주소나 포트를 이름으로 표기
-a --all 모든 소켓의 정보를 출력
-l --listening Listen 소켓의 정보를 출력
-o --option 타이머의 정보를 출력
-e --extended 확장된 소켓 정보를 출력
-m --memory 소켓 메로리 사용량을 출력
-p --processes 소켓을 사용하고 있는 프로세스를 출력
-i --info 내부 TCP 정보를 출력
-s --summary 소켓의 요약정보
-4 --ipv4 IPv4 소켓 정보만
-6 --ipv6 IPv6 소켓 정보만
-0 --packet PACKET 소켓 정보를 출력
-t --tcp tcp 소켓 정보만
-u --udp udp 소켓 정보만
-f --family=FAMILY 해당하는 주소 패밀리의 소켓만

 

4. 주요예제

현재 연결된 소켓정보 출력

$ss

모든 정보

$ss -a

listen소켓만

$ss -l

tcp만

$ss -t

특정상태의 소켓만. established 상태의 소켓만

$ss -t state established

필터링기능. 송신지 포트 500 과 같거나 작은 소켓만

$ss -ltn sport le 500


DNS 명령어

 

1)  nslookup

 

1. 설명

네임서버의 정보를 조회하거나 IP를 통해 도메인 명의 질의할 수 있는 명령어

2. 형식

nslookup [option] hostname|address [dns]

3. 대화형으로 네임서버 질의 하기

$nslookup 입력후 > 표시가 나타나면 원하는 도메인 주소를 입력하고 엔터를 입력. 네임서버의 정보가 출력.

exit 입력하여 대화모드 종료

 

4. 옵션으로 네임 서버 질의하기

$nslookup www.google.com   

$nslookup 8.8.8.8

 

5. DNS 중 MX(Mail Record) 조회하기

메일서버설정에 대한 정보를 조회

$nslookup -type=mx google.com

 

6. CNAME과 NS 레코드 조회하기

$nslookup -q=cname example.com

$nslookup -type=ns google.com  

 

7. 조회할 네임 서버를 변경하기 위해서는 마지막 옵션에 DNS 서버의 주소를 입력

$nslookup redhat.com 8.8.8.8

 

2) dig

 

1. 설명

nslookup 기능과 비슷. 사용이 더 간결하고 출력이 풍부해 셸스크립트에서 사용하기 용이함.

 

2. 형식

dig [@nameserver] hostname|address [querytype]

 

3. dig를 통해 다양한 정보 조회

$dig www.google.com   
메일서버정보조회

$dig www.google.com  MX
네임서버 정보 조회

$dig -t ns www.google.com

지정한 네임서버를 통해 질의

$dig @8.8.8.8 www.google.com   

3) host

 

1. 설명

네임서버에 질의하여 호스트 정보를 얻을 수 있는 가장 간단한 도구

 

2. 형식

host [option] hostname

 

3. 주요 옵션

-t type 지정한 type의 정보를 얻음
A : 호스트 IP주소
NS : 검색한 호스트의 네임서버 호스트 명
MX : 메일 서버
ANY : 타입의 모든 정보
-v 자세한 정보 출력
-a -v -t ANY와 동일

 

4. 주요 예제

$host www.google.com  

$host -t NS www.google.com

4) hostname

 

1. 설명

시스템의 호스트 이름을 조회하거나 설정할때 사용하는 도구

 

2. 형식

hostname [option][hostname]

 

3. 주요 옵션

-a 호스트명에 대한 별칭을 출력
-d 도메인 명을 출력
-f 환전한 FQDN
-i 호스트의 IP주소
-s FQDN 정보에서 첫번때 점까지의 정보
-v 호스트 설정이나 호스트명을 자세히

 

4. 주요 예제

호스트명 변경

#hostname fransis.localdomail

호스트의 IP주소 출력

$hostname -i

 


네트워크 응용 프로그램

 

1) telnet

 

1. 설명

telnet 프로토콜 기반 대화형 통신을 위한 텔넷 서버에 접속하기 위한 명령어

 

2. 형식

telnet [option] address

 

3. 주요예제

mysite.com 텔넷 접속을 수행

telnet mysite.com

 

mysite.com 의 6666포트를 통해 접속 수행. -ㅣ 옵션을 통해 사용자 계정을 my-username으로 설정

telnet -l myusername mysite.com 6666

 

2) ftp

 

1. 설명

파일전송을 위한 FTP 서버 접속하기 위한 명령. 파일을 업로드하거나 다운로드.

 

2. 형식

ftp hostname | address

 

3. 예제

IP주소를 통해 ftp 서버에 접속

$ftp 192.168.100.77

 

호스트 이름을 통해 ftp서버에 접속

$ftp ftp.my.com

 

'Linux' 카테고리의 다른 글

파일시스템 관리  (0) 2020.08.23
리눅스 사용자 관리  (0) 2020.08.22
네트워크 기초  (0) 2020.08.16
프로세스  (0) 2020.08.16
셸 Shell  (0) 2020.08.13