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 |
| Gateway | 192.168.10.1 |
| DHCP pool | 192.168.10.100 - 192.168.10.199 |
| Local domain | lab.local |
| Proxy port | 3128/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.local3. 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.1934. 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 +short5. 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-pager6. 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-all8. 클라이언트 검증
DHCP 클라이언트에서 주소를 다시 받는다. 운영 중인 장비에서는 네트워크가 끊길 수 있으므로 lab VM에서만 실행한다.
sudo dhclient -r
sudo dhclient -v
ip -br addr
cat /etc/resolv.conf
dig web01.lab.local +shortProxy는 클라이언트에서 환경 변수를 지정해 테스트한다.
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.com9. 로그 위치
| 서비스 | 확인 명령 |
|---|---|
| BIND | journalctl -u named -n 100 --no-pager |
| Kea DHCP | journalctl -u kea-dhcp4 -n 100 --no-pager |
| Squid | tail -f /var/log/squid/access.log |
| firewalld | firewall-cmd --list-all |
마무리
Name Server, DHCP, Proxy는 모두 네트워크 전체 동작에 영향을 준다. DNS는 이름 해석, DHCP는 주소 배포, Proxy는 외부 HTTP/HTTPS 접근 경로를 담당하므로, 각 서비스를 독립적으로 검증한 뒤 합쳐야 장애 원인을 찾기 쉽다. 특히 DHCP는 같은 L2 segment에 하나만 존재하도록 실습망을 분리하고 시작하는 것이 안전하다.