IMG-LOGO
공지사항 :

Linux 네트워크 설정과 관리

lmkfox - 2026-08-16 07:45:34 3 Views 0 Comment

Linux 네트워크 설정과 관리 완벽 이해: IP, 네트워크 인터페이스, 라우팅, DNS부터 장애 분석까지

Linux 서버를 운영할 때 네트워크는 가장 중요한 기반 요소 중 하나입니다. 웹 서버, 데이터베이스 서버, 애플리케이션 서버가 아무리 정상적으로 실행되고 있어도 네트워크 설정에 문제가 있다면 외부 사용자는 서비스에 접근할 수 없습니다.

실제 서버 장애에서도 “서버가 다운됐다”는 증상만 보고 서버 자체의 문제라고 판단했지만, 원인을 확인해 보면 IP 설정 오류, DNS 문제, 기본 게이트웨이 장애, 방화벽 차단, 포트 미개방, 라우팅 문제인 경우가 많습니다.

따라서 시스템 엔지니어라면 Linux에서 네트워크 인터페이스를 확인하고 IP 주소를 설정하는 방법부터 라우팅, DNS, 포트, 방화벽, 네트워크 상태 확인까지 기본적인 네트워크 관리 능력을 갖추어야 합니다.

이번 글에서는 Rocky Linux를 포함한 Linux 서버를 기준으로 실무에서 자주 사용하는 네트워크 설정과 관리 방법을 알아보겠습니다.


1. Linux 네트워크의 기본 구조

Linux 서버의 네트워크 통신은 여러 구성 요소가 연결되어 동작합니다.

기본적인 구조를 단순화하면 다음과 같습니다.

애플리케이션
     ↓
TCP/UDP
     ↓
IP
     ↓
네트워크 인터페이스
     ↓
NIC
     ↓
스위치
     ↓
라우터
     ↓
인터넷

예를 들어 사용자가 웹 브라우저에서 서버에 접속하면 다음과 같은 과정이 발생합니다.

사용자
 ↓
DNS 조회
 ↓
서버 IP 확인
 ↓
TCP 연결
 ↓
방화벽 확인
 ↓
웹 서버 포트 접속
 ↓
Nginx / Apache
 ↓
애플리케이션

시스템 엔지니어는 이 과정 중 어느 단계에서 문제가 발생했는지 찾아낼 수 있어야 합니다.


2. IP 주소란 무엇인가?

IP 주소는 네트워크에서 장치를 식별하기 위한 주소입니다.

IPv4 환경에서는 일반적으로 다음과 같은 형태를 사용합니다.

192.168.10.100

IP 주소는 네트워크 주소와 호스트 주소의 개념으로 나누어집니다.

예를 들어

192.168.10.100/24

라고 하면 /24는 서브넷 마스크와 관련된 네트워크 범위를 나타냅니다.

일반적인 /24 네트워크에서는 다음과 같은 주소를 사용할 수 있습니다.

Network : 192.168.10.0
Host    : 192.168.10.1 ~ 192.168.10.254
Broadcast : 192.168.10.255

실제 기업 환경에서는 사설 IP를 사용하는 서버가 많습니다.

대표적인 사설 IPv4 주소 대역은 다음과 같습니다.

10.0.0.0/8
172.16.0.0/12
192.168.0.0/16

3. 네트워크 인터페이스란 무엇인가?

Linux 서버에는 네트워크 통신을 담당하는 네트워크 인터페이스가 존재합니다.

물리 서버에서는 실제 NIC(Network Interface Card)와 연결되어 있을 수 있고, 가상 서버에서는 가상 네트워크 인터페이스가 사용됩니다.

현재 네트워크 인터페이스를 확인하려면 다음 명령어를 사용합니다.

ip link

또는 IP 주소까지 확인하려면

ip addr

간단하게는

ip a

를 사용할 수도 있습니다.

결과에는 다음과 같은 인터페이스가 나타날 수 있습니다.

lo
ens160
ens192
eth0

환경에 따라 이름은 달라질 수 있습니다.


4. Loopback 인터페이스

Linux에는 특별한 네트워크 인터페이스가 하나 존재합니다.

바로 lo 또는 Loopback 인터페이스입니다.

확인해 보면 일반적으로 다음과 같은 주소를 볼 수 있습니다.

127.0.0.1

이를 localhost라고 합니다.

예를 들어 서버 내부에서 애플리케이션이 127.0.0.1:8000으로 실행되고 있다면 외부 사용자는 해당 주소로 직접 접속할 수 없습니다.

이는 서버 자신의 로컬 인터페이스를 의미하기 때문입니다.

따라서 웹 서버가 외부에서 접속되지 않는 경우 애플리케이션이 어느 IP 주소에 바인딩되어 있는지 확인하는 것도 중요합니다.


5. IP 주소 확인하기

현재 서버의 IP 주소를 확인하는 가장 기본적인 명령어는 다음과 같습니다.

ip addr

특정 인터페이스만 확인할 수도 있습니다.

ip addr show ens160

또는 다음과 같이 사용할 수 있습니다.

ip -4 addr

IPv4 주소만 확인할 수 있습니다.

실무에서 서버 IP를 확인할 때는 다음과 같은 정보를 함께 확인하는 것이 좋습니다.

인터페이스 이름
IP 주소
Subnet
MAC 주소
인터페이스 상태

6. MAC 주소란 무엇인가?

IP 주소가 논리적인 네트워크 주소라면 MAC 주소는 네트워크 인터페이스를 식별하는 물리적 또는 링크 계층 주소입니다.

다음 명령어로 확인할 수 있습니다.

ip link

예를 들어 다음과 같은 값이 표시될 수 있습니다.

link/ether 00:11:22:33:44:55

여기서 00:11:22:33:44:55가 MAC 주소입니다.

서버 장애를 분석할 때 IP 주소뿐만 아니라 MAC 주소를 확인해야 하는 경우도 있습니다.

특히 DHCP, VLAN, 네트워크 장비 설정과 관련된 문제에서는 MAC 주소가 중요한 식별 정보가 됩니다.


7. 네트워크 인터페이스 상태 확인

네트워크 인터페이스가 실제로 활성화되어 있는지 확인해야 할 경우가 있습니다.

ip link

인터페이스가 UP 상태인지 확인합니다.

특정 인터페이스를 활성화하려면 다음과 같이 할 수 있습니다.

sudo ip link set ens160 up

비활성화하려면

sudo ip link set ens160 down

다만 운영 서버에서 인터페이스를 down으로 변경하면 즉시 네트워크 연결이 끊길 수 있으므로 매우 주의해야 합니다.

원격 SSH로 접속한 상태에서 잘못 실행하면 자신의 접속이 끊길 수 있습니다.


8. 임시 IP 주소 설정

Linux에서는 ip 명령어를 이용해 임시로 IP 주소를 설정할 수 있습니다.

예를 들어

sudo ip addr add 192.168.10.100/24 dev ens160

와 같이 설정할 수 있습니다.

확인:

ip addr show ens160

하지만 이러한 방식으로 설정한 IP는 NetworkManager 등의 영구 설정에 반영되지 않을 수 있으며 시스템 재부팅 후 사라질 수 있습니다.

따라서 실제 서버에서는 배포판의 네트워크 관리 체계를 이용해 영구적으로 설정해야 합니다.


9. Rocky Linux의 NetworkManager

최근 Rocky Linux에서는 NetworkManager가 네트워크 설정을 관리하는 핵심 구성 요소입니다.

NetworkManager 서비스 상태를 확인하려면

systemctl status NetworkManager

를 사용할 수 있습니다.

NetworkManager의 상태를 확인하는 명령어는 다음과 같습니다.

nmcli general status

네트워크 장치 상태:

nmcli device status

연결 프로파일 확인:

nmcli connection show

이러한 명령어는 Rocky Linux 서버에서 네트워크 설정을 관리할 때 매우 중요합니다.


10. nmcli로 IP 주소 설정하기

nmcli는 NetworkManager를 명령줄에서 관리하기 위한 도구입니다.

예를 들어 특정 연결에 정적 IP를 설정할 수 있습니다.

sudo nmcli connection modify "System ens160" \
ipv4.addresses 192.168.10.100/24

게이트웨이를 설정하려면

sudo nmcli connection modify "System ens160" \
ipv4.gateway 192.168.10.1

DNS 서버를 설정하려면

sudo nmcli connection modify "System ens160" \
ipv4.dns "8.8.8.8 1.1.1.1"

DHCP 대신 수동 설정을 사용하려면

sudo nmcli connection modify "System ens160" \
ipv4.method manual

설정을 적용하기 위해 연결을 다시 활성화할 수 있습니다.

sudo nmcli connection up "System ens160"

연결 이름은 실제 서버의 nmcli connection show 결과에 맞춰 사용해야 합니다.


11. DHCP와 Static IP

서버의 IP 설정 방식은 크게 DHCP와 Static IP로 나눌 수 있습니다.

DHCP는 네트워크에서 IP 주소와 관련 정보를 자동으로 할당받는 방식입니다.

반면 Static IP는 관리자가 서버에 고정된 IP 주소를 지정하는 방식입니다.

기업 서버에서는 일반적으로 서버의 IP 주소를 예측할 수 있어야 하기 때문에 고정 IP를 사용하는 경우가 많습니다.

예를 들어 웹 서버가

192.168.10.100

이라는 IP를 사용하고 있다면 DNS나 방화벽, 모니터링 시스템 등에서도 해당 주소를 기준으로 설정할 수 있습니다.


12. 기본 게이트웨이란 무엇인가?

서버가 자신의 네트워크를 벗어나 다른 네트워크로 통신할 때 사용하는 장치가 기본 게이트웨이(Default Gateway)입니다.

라우팅 정보를 확인하려면 다음 명령어를 사용합니다.

ip route

예를 들어

default via 192.168.10.1 dev ens160

이라는 결과가 있다면

default
→ 기본 경로

192.168.10.1
→ 게이트웨이

ens160
→ 해당 경로에 사용하는 인터페이스

라는 의미입니다.

인터넷에 연결되지 않는 서버를 분석할 때 기본 게이트웨이가 올바르게 설정되어 있는지 확인하는 것은 매우 중요합니다.


13. 라우팅이란 무엇인가?

라우팅(Routing)은 목적지 네트워크까지 패킷을 전달하기 위한 경로를 결정하는 과정입니다.

현재 Linux 서버의 라우팅 테이블은 다음 명령어로 확인합니다.

ip route

예를 들어

192.168.10.0/24 dev ens160
default via 192.168.10.1 dev ens160

와 같은 정보가 있을 수 있습니다.

첫 번째 항목은 로컬 네트워크에 대한 경로이고 두 번째 항목은 그 외의 네트워크로 통신할 때 사용하는 기본 경로입니다.

라우팅 문제는 서버가 특정 네트워크에만 접속되지 않는 장애의 원인이 될 수 있습니다.


14. DNS란 무엇인가?

DNS(Domain Name System)는 사람이 기억하기 쉬운 도메인 이름을 IP 주소로 변환하는 시스템입니다.

예를 들어 사용자가

www.example.com

을 입력하면 DNS 조회를 통해 해당 도메인의 IP 주소를 확인합니다.

Linux 서버에서도 DNS는 매우 중요합니다.

서버가 외부 API를 호출하거나 패키지를 다운로드하거나 다른 서버의 도메인으로 접속할 때 DNS가 필요할 수 있습니다.

DNS 설정을 확인하는 방법은 환경에 따라 다르지만 다음 명령어를 사용할 수 있습니다.

resolvectl status

또는 /etc/resolv.conf를 확인할 수 있습니다.

cat /etc/resolv.conf

15. DNS 장애 분석

인터넷은 되는데 특정 도메인에 접속할 수 없다면 DNS 문제를 의심할 수 있습니다.

예를 들어

ping 8.8.8.8

은 정상인데

ping example.com

이 실패한다면 네트워크 자체보다는 DNS 설정에 문제가 있을 가능성이 있습니다.

DNS 조회를 직접 확인하려면 다음 도구를 사용할 수 있습니다.

dig example.com

또는

nslookup example.com

서버에서 DNS 장애를 분석할 때는 다음 순서가 유용합니다.

IP 통신 확인
→ DNS 서버 연결 확인
→ DNS 조회 확인
→ 실제 서비스 접속 확인

16. ping 명령어

ping은 네트워크 연결 상태를 확인할 때 가장 기본적으로 사용하는 도구입니다.

ping 192.168.10.1

게이트웨이에 정상적으로 응답하는지 확인할 수 있습니다.

외부 IP도 확인할 수 있습니다.

ping 8.8.8.8

다만 ping에 응답하지 않는다고 해서 반드시 네트워크 연결이 끊어진 것은 아닙니다.

방화벽이나 보안 정책에 의해 ICMP가 차단되어 있을 수 있기 때문입니다.

따라서 ping 하나만으로 장애 여부를 판단해서는 안 됩니다.


17. curl을 이용한 서버 통신 확인

웹 서비스의 연결을 확인할 때는 curl이 매우 유용합니다.

예를 들어

curl http://127.0.0.1

을 통해 로컬 웹 서버의 응답을 확인할 수 있습니다.

특정 서버에 접속하려면

curl http://192.168.10.100

HTTPS라면

curl -I https://example.com

을 사용할 수 있습니다.

curl은 단순한 네트워크 연결뿐만 아니라 HTTP 상태 코드와 헤더 등을 확인할 수 있기 때문에 웹 서버 장애 분석에서 매우 중요합니다.


18. 포트란 무엇인가?

IP 주소가 서버를 식별한다면 포트(Port)는 서버에서 실행 중인 특정 네트워크 서비스를 식별하는 데 사용됩니다.

대표적인 포트는 다음과 같습니다.

22    SSH
53    DNS
80    HTTP
443   HTTPS
3306  MySQL / MariaDB
5432  PostgreSQL
6379  Redis

예를 들어 서버 IP가

192.168.10.100

이고 Nginx가 80번 포트를 사용한다면

192.168.10.100:80

으로 표현할 수 있습니다.


19. 열린 포트 확인하기

Linux에서 현재 열려 있는 네트워크 소켓과 포트를 확인할 때 ss 명령어를 많이 사용합니다.

ss -lnt

TCP Listening 포트를 확인할 수 있습니다.

프로세스 정보까지 확인하려면

sudo ss -lntp

를 사용할 수 있습니다.

예를 들어

LISTEN 0 128 0.0.0.0:80

과 같은 결과가 있다면 서버가 80번 포트에서 연결을 기다리고 있다는 의미입니다.

서비스가 실행 중인데 외부에서 접속되지 않는다면 해당 서비스가 실제로 어느 주소와 포트에 바인딩되어 있는지 확인해야 합니다.


20. 127.0.0.1과 0.0.0.0의 차이

서버 애플리케이션에서 매우 중요한 개념입니다.

프로그램이 다음과 같이 실행되었다고 가정해 보겠습니다.

127.0.0.1:8000

이 경우 서버 자신의 로컬 인터페이스에서만 접근할 수 있습니다.

반면

0.0.0.0:8000

으로 실행하면 서버에 존재하는 IPv4 인터페이스에서 들어오는 연결을 받을 수 있도록 바인딩할 수 있습니다.

예를 들어 FastAPI를 개발 서버에서 실행할 때

uvicorn main:app --host 0.0.0.0 --port 8000

과 같이 사용하는 이유가 여기에 있습니다.

단, 외부에서 접근 가능하게 만드는 만큼 방화벽과 인증 등 보안 설정도 함께 고려해야 합니다.


21. 방화벽과 네트워크 접근 제어

서버에서 서비스가 실행되고 있어도 방화벽이 해당 포트를 차단하면 외부에서는 접속할 수 없습니다.

Rocky Linux에서는 일반적으로 firewalld를 사용하는 환경이 많습니다.

상태를 확인합니다.

sudo firewall-cmd --state

현재 허용된 서비스를 확인하려면

sudo firewall-cmd --list-all

특정 포트를 허용하려면 환경과 보안 정책을 확인한 후 다음과 같이 설정할 수 있습니다.

sudo firewall-cmd --permanent --add-service=http

HTTPS도 필요하다면

sudo firewall-cmd --permanent --add-service=https

설정을 적용합니다.

sudo firewall-cmd --reload

방화벽 설정은 운영 서버의 보안에 직접적인 영향을 주기 때문에 필요한 포트만 허용해야 합니다.


22. 네트워크 장애 분석의 기본 순서

서버에서 네트워크 장애가 발생했을 때는 위에서 아래로 또는 아래에서 위로 무작정 확인하기보다 단계적으로 접근하는 것이 좋습니다.

첫 번째로 네트워크 인터페이스 상태를 확인합니다.

ip link

두 번째로 IP 주소를 확인합니다.

ip addr

세 번째로 라우팅을 확인합니다.

ip route

네 번째로 게이트웨이에 연결되는지 확인합니다.

ping 게이트웨이IP

다섯 번째로 외부 IP와 통신되는지 확인합니다.

ping 8.8.8.8

여섯 번째로 DNS를 확인합니다.

dig example.com

일곱 번째로 서비스 포트를 확인합니다.

ss -lntp

마지막으로 실제 애플리케이션에 접속합니다.

curl -I http://서버IP

이러한 순서를 사용하면 장애가 발생한 위치를 빠르게 좁혀갈 수 있습니다.


23. 네트워크 장애 사례

예를 들어 사용자가 웹 서버에 접속할 수 없다고 가정해 보겠습니다.

먼저 서버에서 Nginx가 실행되고 있는지 확인합니다.

systemctl status nginx

실행 중이라면 포트를 확인합니다.

ss -lntp | grep :80

80번 포트가 정상적으로 열려 있다면 로컬에서 접속해 봅니다.

curl -I http://127.0.0.1

로컬 접속이 성공한다면 Nginx 자체는 정상적으로 동작할 가능성이 높습니다.

다음으로 서버의 IP 주소와 방화벽을 확인합니다.

ip addr
sudo firewall-cmd --list-all

외부에서 접속할 수 없다면 방화벽, 네트워크 ACL, 보안 그룹, 라우팅 등을 추가로 확인해야 합니다.

이처럼 장애 분석은 “서비스가 실행 중인가?“에서 끝나는 것이 아니라 실제 사용자가 접속하는 경로 전체를 확인해야 합니다.


24. 네트워크 설정에서 자주 사용하는 명령어

Linux 시스템 엔지니어라면 다음 명령어는 기본적으로 익혀두는 것이 좋습니다.

네트워크 인터페이스 확인:

ip link

IP 주소 확인:

ip addr

라우팅 테이블 확인:

ip route

NetworkManager 상태:

nmcli device status

네트워크 연결 설정:

nmcli connection show

통신 확인:

ping

DNS 조회:

dig

HTTP 통신 확인:

curl

포트 확인:

ss -lntp

방화벽 확인:

firewall-cmd --list-all

이 명령어들은 향후 Linux 서버 장애 대응에서도 매우 자주 사용하게 됩니다.


25. 시스템 엔지니어가 네트워크를 이해해야 하는 이유

시스템 엔지니어에게 네트워크 지식은 선택사항이 아닙니다.

서버 애플리케이션 대부분은 네트워크를 통해 다른 시스템과 통신합니다.

예를 들어 하나의 웹 서비스가 다음과 같은 구조로 구성되어 있다고 생각해 보겠습니다.

사용자
   ↓
인터넷
   ↓
방화벽 / Load Balancer
   ↓
Nginx
   ↓
FastAPI
   ↓
PostgreSQL
   ↓
Redis

이 구조에서 어느 한 곳이라도 네트워크 설정이 잘못되면 서비스 전체가 정상적으로 동작하지 않을 수 있습니다.

따라서 시스템 엔지니어는 단순히 IP 주소를 설정하는 수준을 넘어 다음 내용을 이해해야 합니다.

IP
Subnet
Gateway
Routing
DNS
TCP
UDP
Port
Firewall
NAT
VLAN
VPN
HTTP
HTTPS

이러한 지식은 이후 Docker, Kubernetes, 클라우드 환경을 학습할 때도 그대로 연결됩니다.


마무리

Linux 네트워크 설정과 관리는 시스템 엔지니어가 반드시 익혀야 하는 핵심 기술입니다.

가장 먼저 ip addrip link를 이용하여 네트워크 인터페이스와 IP 주소를 확인할 수 있어야 하며, ip route를 이용하여 서버의 라우팅 구조를 확인할 수 있어야 합니다.

Rocky Linux에서는 NetworkManager와 nmcli를 이용해 네트워크 설정을 관리하는 방법도 중요합니다.

또한 서버가 인터넷과 통신하려면 기본 게이트웨이와 DNS가 정상적으로 설정되어 있어야 하며, 특정 서비스에 접근하려면 해당 포트가 열려 있고 방화벽에서도 허용되어 있어야 합니다.

장애가 발생했을 때는 다음과 같은 순서를 기억하면 좋습니다.

네트워크 인터페이스
        ↓
IP 주소
        ↓
라우팅
        ↓
게이트웨이
        ↓
외부 IP 통신
        ↓
DNS
        ↓
포트
        ↓
방화벽
        ↓
애플리케이션

이 순서대로 하나씩 확인하면 “인터넷이 안 된다”, “SSH 접속이 안 된다”, “웹 서버에 접속할 수 없다”, “DNS가 동작하지 않는다”와 같은 다양한 장애를 체계적으로 분석할 수 있습니다.

특히 앞으로 Docker와 Kubernetes를 학습하게 되면 브리지 네트워크, NAT, 가상 인터페이스, Service, Ingress 등 지금보다 훨씬 복잡한 네트워크 구조를 만나게 됩니다.

따라서 지금 단계에서 Linux 네트워크의 기본 원리를 확실하게 이해하는 것이 중요합니다.


댓글