Linux 기반 Name Server, DHCP, Proxy 구성 가이드

Linux 기반 Name Server, DHCP, Proxy 구성 가이드입니다. BIND 9, Kea DHCP, Squid, firewalld 설정과 클라이언트 검증 흐름을 정리했습니다.

Linux 기반 Name Server, DHCP, Proxy 구성 가이드

한 대의 Linux 서버가 실습망의 DNS, DHCP, Proxy 역할을 제공하는 구조를 정리한다. 실습은 서비스별 설정 파일, 검증 명령, 방화벽을 기준으로 BIND 9, Kea DHCP, Squid를 기준으로 서비스별 설정 파일, 검증 명령, 방화벽까지 묶어서 작성한다.

실습망에서 이런 서버를 만들 때는 역할을 한 번에 켜기보다 DNS부터 검증하고, 그 다음 DHCP, 마지막에 Proxy를 붙이는 순서가 좋다. DHCP가 잘못 동작하면 같은 네트워크의 다른 장비 주소까지 바꿀 수 있으므로 반드시 격리된 lab segment에서 진행한다.

실습 토폴로지

항목예시 값
Linux 서비스 서버192.168.10.192/24
Gateway192.168.10.1
DHCP pool192.168.10.100 - 192.168.10.199
Local domainlab.local
Proxy port3128/tcp

1. 패키지 설치

sudo dnf install -y bind bind-utils kea squid

rpm -q bind bind-utils kea squid
systemctl list-unit-files | grep -E 'named|kea|squid'

2. 고정 IP와 hostname 확인

DNS/DHCP 서버는 주소가 바뀌면 안 된다. NetworkManager connection 이름을 확인하고 고정 IP를 설정한다.

nmcli con show
ip -br addr
ip route

CON_NAME="System ens33"
sudo nmcli con mod "${CON_NAME}" ipv4.method manual
sudo nmcli con mod "${CON_NAME}" ipv4.addresses 192.168.10.192/24
sudo nmcli con mod "${CON_NAME}" ipv4.gateway 192.168.10.1
sudo nmcli con mod "${CON_NAME}" ipv4.dns 127.0.0.1
sudo nmcli con up "${CON_NAME}"

sudo hostnamectl set-hostname infra01.lab.local

3. BIND named.conf 구성

/etc/named.conf에서 lab network의 질의를 허용하고, 내부 zone을 추가한다.

options {
 listen-on port 53 { 127.0.0.1; 192.168.10.192; };
 listen-on-v6 port 53 { none; };
 directory "/var/named";
 allow-query { localhost; 192.168.10.0/24; };
 recursion yes;
 dnssec-validation yes;
};

zone "lab.local" IN {
 type master;
 file "lab.local.zone";
 allow-update { none; };
};

zone 파일은 다음처럼 시작한다.

$TTL 300
@ IN SOA ns1.lab.local. admin.lab.local. (
 2026062301
 3600
 900
 604800
 300 )
 IN NS ns1.lab.local.

ns1 IN A 192.168.10.192
infra01 IN A 192.168.10.192
proxy IN A 192.168.10.192
web01 IN A 192.168.10.193

4. DNS 문법 검사와 기동

sudo chown root:named /var/named/lab.local.zone
sudo chmod 640 /var/named/lab.local.zone

sudo named-checkconf /etc/named.conf
sudo named-checkzone lab.local /var/named/lab.local.zone

sudo systemctl enable --now named
sudo systemctl status named --no-pager

dig @192.168.10.192 infra01.lab.local +short
dig @192.168.10.192 web01.lab.local +short

5. Kea DHCPv4 구성

기존 ISC DHCPD 환경을 쓰는 곳도 있지만, 신규 학습은 ISC의 현재 DHCP 서버인 Kea 기준으로 보는 것이 좋다. /etc/kea/kea-dhcp4.conf 예시는 다음과 같다.

{
 "Dhcp4": {
 "interfaces-config": {
 "interfaces": [ "ens33" ]
 },
 "valid-lifetime": 3600,
 "renew-timer": 900,
 "rebind-timer": 1800,
 "subnet4": [
 {
 "subnet": "192.168.10.0/24",
 "pools": [
 { "pool": "192.168.10.100 - 192.168.10.199" }
 ],
 "option-data": [
 { "name": "routers", "data": "192.168.10.1" },
 { "name": "domain-name-servers", "data": "192.168.10.192" },
 { "name": "domain-name", "data": "lab.local" }
 ]
 }
 ]
 }
}

문법 검사 후 서비스를 시작한다.

sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf

sudo systemctl enable --now kea-dhcp4
sudo systemctl status kea-dhcp4 --no-pager
sudo journalctl -u kea-dhcp4 -n 80 --no-pager

6. Squid Proxy 구성

Proxy는 실습망 대역만 허용한다. http_access allow all처럼 전체 허용으로 열어두면 외부에서 악용될 수 있다.

acl lab_net src 192.168.10.0/24
http_port 3128

http_access allow localhost
http_access allow lab_net
http_access deny all

설정 검증과 기동은 다음 순서로 한다.

sudo squid -k parse
sudo systemctl enable --now squid
sudo systemctl status squid --no-pager
ss -lntp | grep ':3128'

7. 방화벽 설정

sudo firewall-cmd --add-service=dns --permanent
sudo firewall-cmd --add-service=dhcp --permanent
sudo firewall-cmd --add-port=3128/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

8. 클라이언트 검증

DHCP 클라이언트에서 주소를 다시 받는다. 운영 중인 장비에서는 네트워크가 끊길 수 있으므로 lab VM에서만 실행한다.

sudo dhclient -r
sudo dhclient -v

ip -br addr
cat /etc/resolv.conf
dig web01.lab.local +short

Proxy는 클라이언트에서 환경 변수를 지정해 테스트한다.

export http_proxy="http://192.168.10.192:3128"
export https_proxy="http://192.168.10.192:3128"

curl -I http://example.com
curl -I https://example.com

9. 로그 위치

서비스확인 명령
BINDjournalctl -u named -n 100 --no-pager
Kea DHCPjournalctl -u kea-dhcp4 -n 100 --no-pager
Squidtail -f /var/log/squid/access.log
firewalldfirewall-cmd --list-all

마무리

Name Server, DHCP, Proxy는 모두 네트워크 전체 동작에 영향을 준다. DNS는 이름 해석, DHCP는 주소 배포, Proxy는 외부 HTTP/HTTPS 접근 경로를 담당하므로, 각 서비스를 독립적으로 검증한 뒤 합쳐야 장애 원인을 찾기 쉽다. 특히 DHCP는 같은 L2 segment에 하나만 존재하도록 실습망을 분리하고 시작하는 것이 안전하다.

문서 링크

BGM EVER