요새 앱을 띄우면서 리눅스 컴퓨터를 서버로 활용하는 일이 빈번하게 있는데 주로 사용하는 명령어는
netstat
,iptables
,ping
정도인 것 같다. 내용을 자세히 파면 보는 시야가 더 넓어지지 않을까?
리눅스에서 네트워크 서비스를 사용하려면 가장 먼저 네트워크 하드웨어를 설치하고, 다음으로 네트워크 프로토콜, 네트워크 서비스 프로그램 순으로 설치해야 한다. 리눅스에서 다양한 네트워크 하드웨어를 지원하는데, 보편적으로 이더넷 카드(Ethernet Card) 이외에도 모뎀 ISDN, AX.25, ATM 등도 지원한다. 최근 Xen, KVM, VirtualBox, Docker 등의 서버 가상화 기술을 사용하는 경우에도 가상 장치 생성을 통해 지원한다.
리눅스에서는 자동으로 인식하여 설치해주기에 별도의 설정이 필요없다. 그러나 새롭게 출시된 이더넷 카드의 경우에는 제조사 홈페이지에서 리눅스 버전이나 커널 버전에 맞는 모듈을 받아 설치하고, modprobe
명령을 이용해서 커널에 로드 시킨다.
인터넷 접속
인터넷 접속을 위해서는 하드웨어 설정 이외에 IP 주소 설정이 필요하다. DHCP 서버에 의해 IP를 자동으로 할당 받은 경우에는 큰 문제가 없지만 서버로 사용하거나 고정 IP를 할당받은 경우에는 정확한 주소 정보가 필요하다. 이를 위해 IP 주소
, 넷마스크 주소
, 게이트웨이 주소
가 요구된다.
넷마스크(Netmask)
와 게이트웨이(Gateway)
주소
넷마스크 주소는 다른말로 서브넷마스크(Subnet Mask)라고도 부루는데, 네트워크를 분할하여 새로운 하위의 네트워크를 구성할 때 사용한다.
넷마스크 주소값을 255.255.255.0(==192.168.3.12/24)으로 설정하면 256개의 주소에서 2개는 네트워크 주소와 브로드캐스트 주소로 할당되어 실제 사용할 수 있는 주소는 254개가 된다.
서브넷 마스크를 사용하는 이유
브로드캐스트 영역(네트워크)를 나누기 위함 입니다. 한 네트워크에 수 많은 호스트가 있을 경우 원활한 통신이 불가능해지게 됩니다. 이를 해결하고 브로드 캐스트 영역에 부하를 줄이기 위해서 네트워크를 적절하게 나누어 주셔야 합니다.
gnome-control-center
에서 network
관련 항목으로 관리ip
, ifconfig
, route
등을 사용하여 설정. 명령입력과 동시에 반영되고 재부팅하면 초기화 되므로 주의!설정 예)
ifconfig eth0 192.168.12.22 netmask 255.255.255.0 up
route add -net 192.168.12.0 netmask 255.255.255.0 eth0
route add default gw 192.168.12.1
/etc/sysconfig/network-scripts/ifcfg-네트워크장치명
으로 저장되므로 vi 편집기 등을 통해 해당 내용을 직접 변경한다.systemctl restart network
: 네트워크 정보를 갱신해야함!이더넷 장치, IP 주소, 라우팅 정보 등의 설정 정보를 출력하거나 변경
예) ip addr show
: IP주소를 출력
ip addr del 192.168.5.13/24 dev eth1
: IP 주소 정보를 삭제
ip route show
: 라우팅 테이블 정보를 출력
앞으로 이 명령어는 ip로 대체됩니다. 유닉스 및 리눅스 초창기부터 네트웤느 인터페이스를 설정하거나 확인하는 명령어
예) ifconfig
앞으로 이 명령어도 ip로 대체됩니다. 유닉스 및 리눅스 초창기부터 라우팅 테이블의 정보를 출력하거나관리하는 명령.
예) route
네트워크의 연결 상태를 출력하는 명령이다. 네트워크 연결 상태 외에도 라우팅 테이블 정보, 네트워크 인터페이스 상태, 매스커레이드(masquerade) 연결상태, 멀티캐스트 멤버 등의 정보를 출력한다.
값 | 내용 |
---|---|
LISTEN | 소켓을 열고 기다리는 상태(서버에서 클라이언트로 들어오는 패킷을 위해) |
SYS-SENT | 로컬 시스템의 클라이언트 앱이 원격 호스트에 연결을 요청한 상태 |
SYN_RECEIVED | 서버 시스템이 원격 클라이언트로부터 접속 요구를 받아 클라이언트에 응답을 했지만 확인 메시지를 받지 못한 상태 |
ESTABLISED | 3Way-Handshaking이 완료된 후 서버와 클라이언트가 서로 연결된 상태 |
CLOSE-WAIT | 원격 호스트는 종료된 상태이고 소켓을 종료하기 위해 기다리는 상태 |
TIME-WAIT | 패킷 처리는 끝났지만 분실되었을지 모르는 느린 세그멘트를 위해 당분간 소켓을 열어놓은 상태 |
CLOSED | 소켓 연결이 종료된 상태 |
소켓 상태를 출력해주는 명령으로 netstat
명령과 유사하다. 다른 도구에 비해 TCP 및 상태 정보에 더욱 많은 정보를 제공한다.
예) ss -n
ARP(Address Resolution Protocol) 캐시를 관리하는 명령이다. 현재 접속되어있는 32비트 IP주소를 하드웨어 주소(MAC address) 로 바꾸어서 기억하는 곳이다. 15분정도 쓰이지 않으면 ARP 캐시에서 제거된다.
예) arp -n
네트워크 인터페이스의 상태를 점검하고 설정하는 유틸리티
mii-tool -v eth0
: eth0
네트워크 인터페이스 장치의 정보를 표시하고 물리적으로 케이블이 연결되어있는지 여부를 확인할 수 있다.
이더넷 카드 설정 정보를 출력하거나 변경
예) ethtool enp0s3
: 네트워크 인터페이스 정보를 출력
ethtool -s enp0s3 speed 1000 duplex full autoneg off
: 설정을 변경
인터넷 제어 메시지 프로토콜인 ICMP(Internet Control Message Protocol)을 이용하여 네트워크 연결을 확인할 수 있는 명령. 원격의 호스트와 서로 연결이 되어있는지 확인하고, 패킷을 보내고 받는 시간으로 네트워크 장애 여부도 판단할 수 있다.
예) ping -c 4 localhost
: localhost에 기본 64바이트 메시지 4개의 패킷을 전송한다.
패킷이 특정 호스트까지 라우팅되는 과정을 출력하는 명령. 라우팅 과정에 장애가 있을 경우에 위치를 파악할 수 있다.
예) traceroute www.ihd.or.kr
: 라우팅 과정을 출력
cf. *
표시는 장비에서 timeout 현상이 발생한 것을 의미하며, 최근에는 네트워크 부하가 늘어나는 관계로 ping이나 traceroute 관련 프로토콜인 ICMP를 차단하는 곳이 많아지고 있다.
DNS(Domain Name Server)를 이용하여 도메인이나 IP를 조회하는 명령이다. 대화형으로도 조회가 가능함.
예) nslookup exam.ihd.or.kr
: 현재 설정된 네임 서버 정보와 함께 IP주소를 출력
nslookup -type=mx naver.com
: 메일 서버 설정에 대한 정보를 출력
도메인명(FQDN; Fully Qualified Domain Name)으로 정보를 조회하는 명령
예) dig www.ihd.or.kr
: IP주소 정보를 출력
dig ihd.or.kr MX
: 메일 서버 정보를 출력
dig -t ns ihd.or.kr
: 네임 서버 정보를 출력
도메인 명으로 정보를 조회하는 명령
예) host ihd.or.kr
: IP주소 정보를 출력한다.
host -v ihd.or.kr
: IP주소 정보를 자세히 출력한다.
호스트 네임을 출력하거나 설정하는 명령
예) hostname
: 설정되어있는 호스트명을 출력한다.
hostname -f
: 호스트에 설정된 FQDN을 출력한다.
hostname www.ihd.or.kr
: 호스트 네임을 설정한다.
/etc/sysconfig/network-scripts
네트워크 인터페이스 환경설정과 관련된 파일과 스크립트가 저장되는 곳.
보통 네트워크 인터페이스 파일은 ifcfg-네트워크장치명
으로 생성된다.
/etc/resolv.conf
시스템에서 사용하는 네임서버(DNS 서버)를 설정하는 파일. CentOS7 버전부터는 위에서 언급한 네트워크 인터페이스 파일에서 지정한다.
nameserver
은 현재 사용중인 DNS서버의 IP주소.
search
호스트+도메인으로 사용할 도메인 명을 지정해둔 것이다. 거의 모두 호스트명과 도메인 명을 함께 사용한다. 하지만 특별하게 호스트명만 사용되었을 때 사용하게될 기본 도메인명을 의미하는 것이다.
예를 들어 search abc.com 이라고 가정하자. 그럼 "telnet 호스트명"과 같이 "telnet www"라고 하였을 경우에 자동으로 "telnet www.abc.com"으로 인식하는 것이다. (출처)
/etc/hosts
DNS 서버 이전에 많이 이용된 파일. IP주소와 호스트명을 매핑시켜 데이터베이스처럼 사용.
자주 이용하는 IP주소에 별칭을 설정하여 접속을 쉽게하거나 로컬 시스템에 가상 도메인을 부여하여 도메인 기반의 실습을 할 수 있다.
오른쪽 필드의 별칭으로 왼쪽 필드의 ip에 연결될 수 있다.