2025. 9. 9. 13:25ㆍ백엔드/리눅스
메일 서비스
전자 메일 시스템은 사용자끼리 편지를 주고받는 서비스이며 MTA, MUA, MDA 로 구성됨

| MTA (Mail Transfer Agent) |
자신에 등록되어 있는 메일서버에 SMTP 를 사용하여 메일 전달 |
| MUA (Mail User Agent) |
메일을 작성하고 읽는 사용자 인터페이스 |
| MDA (Mail Delivery Agent) |
메일 서버에서 수신된 메일을 분류하여 해당 수신자의 메일박스에 전달 |
→ 보내기, 메일서버 간 메시지교환은 SMTP 프로토콜을 사용하고 (송신)
→ 메일 서버에 도착한 메일을 사용자 PC에서 확인 시에는 POP3 또는 IMAP을 사용한다.(수신)
→ MIME(Multi-purpose Internet Mail Extension) 은 멀티미디어 전자우편을 위한 표준으로,
멀티미디어 데이터를 ASCII 형식으로 변환할 필요 없이 인터넷 전자 우편으로 송신하기 위한 SMTP의 확장 규격임
FTP 서비스
→ 통신 모드로 패시브 모드와 액티브 모드로 구분
패시브 모드: FTP서버가 지정해 준 포트로 클라이언트가 트래픽을 송신함
액티브 모드: 클라이언트가 요청한 포트로 FTP서버가 트래픽을 송신함
FTP 20번 포트 → 일반 데이터 전송용
FTP 21번 포트 → 제어 데이터 전송용
FTP 관련 명령어
→ FTP의 익명 계정은 공개 소프트웨어를 사용하는 FTP 서버에 접속할 때 입력할 수 있는 계정

| open | 호스트이름 또는 IP주소를 사용하여 접속 |
| close | 현재 접속중인 연결을 끊고 FTP 명령어 모드로 돌아감 |
| ascii | ASCII 형태로 파일 송수신 |
| binary | Binary 형태로 파일을 송수신 |
| (m)get | FTP 서버로부터 (복수 개의) 파일을 전송받음 |
| (m)put | 자신의 시스템에 있는 (복수 개의) 파일을 FTP 서버로 전송 |
| hash | 파일 전송 상태를 # 문자를 통해서 확인 |
| delete | FTP 서버의 파일을 삭제 |
DNS 서비스
DNS 설정정보, 질의응답 점검 명령어로는 nslookup 과 dig가 있음.
→ 호스트이름 ↔ IP주소 변환(또는 조회) 프로토콜
→ DNS에서는 도메인명을 분산된 트리 형태의 계층 구조로 관리한다.
→ 일반 최상위 도메인(generic Top-Level Domain, gTLD)은 특정한 조직 계열에 따라 사용된다.
도메인의 길이는 3글자 이상이며, 조직의 종류에 따라 사용하는 이름이 다르다.

DNS 루트 서버란
루트 서버는 루트 영역에서 작동하는 DNS 이름 서버
루트 영역 내에 저장되거나 캐시된 레코드에 대한 쿼리에 직접 응답할 수 있으며 다른 요청을 적절한 최상위 도메인(TLD) 서버에서 참조할 수도 있다.
주소 조회 과정
사용자가 브라우저에 웹 주소를 입력 → 캐시되지 않은 작업인 경우 DNS 조회가 루트 영역에서부터 시작됨 → DNS 시스템의 계층 구조를 따라 이동하여 TLD 서버에 도달한 다음 특정 도메인(및 하위 도메인)의 권한 있는 네임서버에 도달한 후, IP주소를 획득한다.
호스트명에 대해 IP주소를 획득하는 과정 (상세)
ⓐ URL 입력 → /etc/host.conf 조회(order hosts, bind) → /etc/hosts → IP주소 획득
ⓑ ⓐ에서 결과가 없는 경우 → /etc/resolv.conf 에서 네임서버 설정 확인
ⓒ 네임서버 설정 존재 → 네임서버에 질의 → 응답 → 조회성공 또는 오류코드(RCODE)반환
ⓒ 네임서버 설정 미존재 또는 네임서버 응답없음 → URL주소 알수 없음
(참고)DNS 오류 코드 (RCODE)
| 코드 | 코드명 | 의미 |
| 0 | NOERROR | 정상 응답 (에러 없음) |
| 1 | FORMERR | 질의 포맷 오류 (클라이언트가 잘못된 질의 전송) |
| 2 | SERVFAIL | 서버 내부 오류 또는 응답 불가 (네임서버 미응답 포함) |
| 3 | NXDOMAIN | 존재하지 않는 도메인 (네임서버는 응답했지만 해당 도메인 없음) |
| 4 | NOTIMP | 지원하지 않는 요청 타입 |
| 5 | REFUSED | 서버가 요청 거부 (권한 없음, 정책 거부 등) |
네임서버 응답 없음 (Timeout, 서버 죽음, 방화벽 차단 등)
→ 클라이언트 입장에서는 응답을 못 받으므로 SERVFAIL(2)로 처리됨
네임서버 설정이 존재하지 않음 (NS 레코드 없음)
→ 일반적으로 상위 DNS에서 NXDOMAIN(3) 또는 권한 없는 영역 응답 반환
도메인 자체는 있지만 올바른 NS 설정이 안 된 경우
→ SERVFAIL(2) 발생 (레지스트리에는 도메인이 있지만 연결된 NS가 무응답인 경우)
Telnet SSH
Telnet 은 Byte스트림 형식으로 전송
SSH 는 DES, RSA 등의 암호화 기법을 사용하여 전송, 압축 기술도 제공
telnet [호스트]
| -d | 디버깅 작동 |
| -a | 자동 로그인 시도 |
| -l user | 자동 로그인을 위해 사용자 이름(user)을 원격 시스템으로 전송 |
| port | 원격 시스템에 연결된 포트 번호를 지정 해당 서비스 활성화 여부 확인 가능 다른 네트워크 프로그램을 지정하는 데 사용됨 (선택사항) |
ssh [옵션] [서버] 또는 ssh [계정@서버]
| -a | 인증 에이전트의 전송을 불가능하게 한다. |
| -c | 세션을 암호화하는 데 사용할 암호 해독기를 선택함 idea 가 기본값이고 arcfour 가 가장 빠르며 none은 rlogin 이나 rsh(암호화 없음)을 사용하는 것과 같다. |
| -p | 원격 호스트에 있는 연결할 포트를 설정해 줌 |
| -l | 원격 시스템에 사용할 로그인 이름을 설정해 줌 |
NFS (Network File System)
→ 썬 마이크로시스템즈 사에서 개발하였고, 네트워크 기반 다른 시스템과 파일 시스템을 공유하기 위한 클라이언트/서버 프로그램
→ 다른 PC의 파일 시스템을 마운트하고 공유하여 자신의 디렉터리인 것처럼 사용할 수 있게 해줌
→ NFS는 portmap 이 먼저 수행되어 있어야만 서비스가 실행된다.
* portmap: NIS, NFS 등 RPC(Remote Procedure Call) 연결에 관여하는 데몬
→ NFS 서비스는 nfsd, rpc.mountd, rpc.statd, rpc.rockd, rpc.rquotad 데몬들이 구동됨
→ NFS 서버: nfsd, rpc.mountd, rpc.statd, rpc.lockd 데몬이 작업
→ NFS 클라이언트: rpc.statd, rpc.rockd, rpc.rquotad 데몬이 작업
RPC(Remote Procedure Call)
→ 동적으로 서비스와 포트를 연결할 때 사용하는 방법
→ 서비스-포트 정적 구성: /etc/services 파일 참조
→ 서비스-포트 동적 할당받아 사용하는 방법: RPC인 rpcbind(SUN에서는 sunrpc)를 사용한다.
운영 과정
ⓐ 동적으로 포트를 할당받기 위해 원격 서비스는 rpcbind(port# 111) 접속
ⓑ 서비스를 위한 포트번호 할당 요청
ⓒ rpcbind가 현재 시스템에서 사용되지 않고 있는 포트번호를 RPC를 이용하여
요청한 시스템에 전달하고, 그 포트번호를 자신이 동작하는 시스템의 해당 서비스에 할당
ⓓ 할당받은 포트를 사용하여 다시 패킷을 수신할 시스템에 서비스를 요청함
ⓔ 요청받은 시스템은 포트번호에 해당하는 서비스를 처리할 프로그램에 패킷 전달
리눅스의 네트워크 서비스
리눅스에서는 다양한 네트워크 인터페이스를 지원한다.
| 인터 페이스 |
설명 |
| lo | 루프백 인터페이스 |
| eth | 이더넷 인터페이스 |
| ppp | PPP 인터페이스 |
| dl | D-Link-DE-600 포켓 어댑터 시리즈의 인터페이스 |
| plip | 병렬(패러랠) 라인 인터페이스 |
| sl | SLIP 인터페이스 |
네트워크 인터페이스 수동설정 방법
→ 일반적으로는 자동으로 인식되지만 인식되지 않는 경우가 생기면 수동으로 설정해야함
→ 컴파일된 인터페이스 모듈을 커널에 적재하는 것이다. (수동/자동)
| 모듈 적재법 | 설명 |
| 수동 | 모듈 적재 관련 명령어 → /sbin/lsmod 현재 적재되어 있는 모듈들의 정보 확인 (list) → /sbin/lnsmod 적재하고자 하는 모듈 삽입 (insert) → /sbin/rmmod 현재 적재되어 있는 모든 모듈을 제거 (remove) → /sbin/modprobe 모듈의 적재 및 제거 |
| 자동 | 부팅 시 자동으로 적재할 정보가 담긴 파일의 정보를 읽어오게 함 → 자동 적재 모듈 파일명: /etc/modprobe.conf |
네트워크 설정 파일
/etc/sysconfig/network
→ 네트워크 기본 정보가 설정된 파일.
| 항목 | 설명 |
| NETWORKING=yes|no | 네트워크 사용유무 |
| HOSTNAME=호스트명 | 전체 도메인명 지정 |
| GATEWAY=GWIP 주소 | 게이트웨이 주소 |
| GATEWAY DEV=디바이스명 | 게이트웨이로 연결된 장비명 |
/etc/sysconfig/network-scripts/ifcfg-ethX
(데비안은 /etc/network/interfaces)
→ 지정된 네트워크 인터페이스의 네트워크 환경설정 정보 저장

| 항목 | 설명 |
| DEVICE=디바이스명 | 네트워크 장치명 |
| BOOTPROTO=static|dhcp|none | 고정IP / 유동IP , IP미지정 |
| BROADCAST=브로드캐스트주소 | Limited 브로드캐스트주소 : 255.255.255.255 Directed 브로드캐스트주소: 호스트비트가 모두 1 인 주소 |
| IPADDR=IP주소 | 할당받은 호스트의 IP 주소 |
| NETMASK=서브넷마스크 | 할당받은 서브넷마스크 |
| NETWORK=네트워크주소 | 네트워크주소 |
| ONBOOT=yes|no | 부팅 시 해당 장비 활성화 유무 결정 |
| TYPE=네트워크타입 | 장치가 실행하는 네트워크 환경 지정 |
/etc/resolv.conf
→ 기본적으로 사용할 도메인명과 네임서버를 설정
domain 도메인명, nameserver 네임서버주소
네임서버주소는 여럿 지정 가능

/etc/hosts
→ IP 주소와 도메인 주소를 1:1로 등록하여 lookup(조회)
→ DNS 질의를 거치지 않고 직접적으로 IP주소 획득 가능
/etc/host.conf
→ DNS 서비스 제공시 해당 파일을 검사하여 설정에 따라 서비스함
IP 주소 설정 (3가지)
ⓐ 위에서 정리한 네트워크 설정 파일로 설정
ⓑ 명령어 사용
ifconfig 인터페이스명 <IP주소> netmask <넷마스크주소>
[broadcast <브로드캐스트주소> [up|down]
ⓒ 유틸리티 이용
nmtui 네트워크 관리자 호출

gnome-control-center , nm-connection-editor 등 (X-윈도 GUI모드)
ⓐ ⓑ ⓒ 중 하나의 방법을 사용하여 설정후, 시스템에 명령어를 입력하여 적용
systemctl [start|stop|restart] network # 적용
systemctl status network # 네트워크 상태 활성/비활성 확인
라우팅 테이블 설정 및 관리
명령어 route
route
<add|del>
[-net|-host 네트워크주소] [netmask 넷마스크주소]
[[dev] 인터페이스명]
목적지 경로가 라우팅 테이블에 없는 경우 디폴트 게이트웨이로 트래픽을 전송하도록 설정 가능
route add default gw <GW> dev <인터페이스명>
네트워크 관련 명령어
| TCP/IP 주소 설정 정보 확인 | ifconfig , nslookup |
| 네트워크 경로 상태 확인 | ping, traceroute |
| 네트워크 연결 상태 확인 | netstat |
| 라우팅 테이블 확인 | route |
| NIC 상태 확인 | ethtool, mii-tool, arp |
ifconfig
→ TX: 송신패킷 수, RX: 수신패킷 수

netstat [옵션]
→ 전송 제어 프로토콜, 라우팅 테이블, 수많은 네트워크 인터페이스, 네트워크 프로토콜 통계 및 네트워크 연결 상태 확인
| 옵션 | 기능 |
| -r | 라우팅 테이블 내용 표시 |
| -e | 랜카드에서 송신한 패킷의 용량 및 종류 확인 |
| -n | IP 주소 형태로 주소와 포트번호를 표시 |
| -i | 인터페이스의 정보를 출려 |
| -s | 각종 프로토콜의 상태를 보여줌 |
| -c | 1초 단위로 보여줌 |
| -l | 현재 LISTEN 되고 있는 소켓 정보 표시 |
| -a | 현재 다른 호스트와 연결되어 있거나 대기 중인 모든 포트번호 표시 |
mii-tool
→ 인터페이스의 속도, 전송모드 등을 확인 가능
ethtool
→ 인터페이스의 물리적 연결 여부 확인 가능
→ mii-tool 보다 더 상세한 상태 정보 확인 가능
arp [옵션]
| 옵션 | 설명 |
| -a | arp 테이블 확인 |
| -s IP주소 MAC주소 | 지정된 IP주소와 MAC주소를 테이블에 추가 |
'백엔드 > 리눅스' 카테고리의 다른 글
| 리눅스 :: 활용 기술 (3) | 2025.09.10 |
|---|---|
| 리눅스 :: 기술 동향 (0) | 2025.09.09 |
| 리눅스 :: 네트워크(기초) (0) | 2025.09.09 |
| 리눅스 :: X-윈도우 (0) | 2025.09.08 |
| 리눅스 :: 주변 장치 명령어 (0) | 2025.09.08 |