방화벽 역할 Linux 서버 설치 가이드

방화벽 역할 Linux 서버 설치 가이드입니다. 2-NIC Router/NAT 구조, static LAN, IP forwarding, firewalld zone, masquerade와 client 검증을 정리했습니다.

방화벽 역할 Linux 서버 설치 가이드: 2-NIC Router/NAT 실습

방화벽 역할 Linux 서버는 일반 서버와 다르게 최소 두 개의 네트워크 인터페이스를 기준으로 설계한다. 한쪽은 외부망 또는 upstream에 연결하고, 다른 한쪽은 내부 실습망의 gateway가 된다. 실습은 설치 화면 위주의 기록이었으므로, 여기서는 2-NIC 구조, IP forwarding, firewalld zone, NAT, 내부 client 검증까지 이어지는 설치 후 구성 절차로 정리한다.

실습 구조

NIC예시역할
ens33DHCP 또는 외부망 IPWAN, 패키지 설치와 외부 통신
ens34192.168.10.1/24LAN, 내부 실습망 gateway

1. 설치 후 NIC 확인

cat /etc/os-release
ip -br link
ip -br addr
nmcli dev status
nmcli con show

NIC 이름은 환경마다 다르다. 아래 명령에서 ens33, ens34는 예시이므로 실제 이름에 맞게 바꾼다.

2. hostname과 기본 패키지

sudo hostnamectl set-hostname fw01.lab.local
sudo dnf update -y
sudo dnf install -y vim-enhanced bash-completion bind-utils tcpdump lsof chrony

sudo systemctl enable --now chronyd
chronyc sources -v

3. WAN/LAN IP 설정

WAN은 DHCP, LAN은 static으로 구성하는 예시다.

WAN_CON="System ens33"
LAN_CON="System ens34"

sudo nmcli con mod "${WAN_CON}" ipv4.method auto
sudo nmcli con mod "${LAN_CON}" ipv4.method manual
sudo nmcli con mod "${LAN_CON}" ipv4.addresses 192.168.10.1/24
sudo nmcli con mod "${LAN_CON}" ipv4.gateway ""
sudo nmcli con mod "${LAN_CON}" ipv4.dns ""

sudo nmcli con up "${WAN_CON}"
sudo nmcli con up "${LAN_CON}"

ip -br addr
ip route

4. IP forwarding 활성화

Linux가 라우터처럼 패킷을 전달하려면 kernel forwarding을 켜야 한다.

cat <<'EOF' | sudo tee /etc/sysctl.d/90-lab-router.conf
net.ipv4.ip_forward = 1
EOF

sudo sysctl --system
sysctl net.ipv4.ip_forward

5. firewalld zone 배치

외부 NIC는 public, 내부 NIC는 internal에 배치한다.

sudo systemctl enable --now firewalld

sudo firewall-cmd --zone=public --change-interface=ens33 --permanent
sudo firewall-cmd --zone=internal --change-interface=ens34 --permanent
sudo firewall-cmd --reload

firewall-cmd --get-active-zones
firewall-cmd --zone=public --list-all
firewall-cmd --zone=internal --list-all

6. NAT masquerade 설정

내부망 client가 외부로 나갈 수 있도록 public zone에 masquerade를 켠다.

sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --reload
firewall-cmd --zone=public --query-masquerade

7. 내부 관리 서비스 제한

방화벽 서버 자체의 SSH는 내부망에서만 접근하도록 둔다.

sudo firewall-cmd --zone=public --remove-service=ssh --permanent
sudo firewall-cmd --zone=internal --add-service=ssh --permanent
sudo firewall-cmd --reload

firewall-cmd --zone=public --list-services
firewall-cmd --zone=internal --list-services

8. 내부 client 설정

DHCP가 아직 없다면 client에 수동으로 주소를 넣고 gateway를 192.168.10.1로 설정한다.

sudo nmcli con mod "System ens33" ipv4.method manual
sudo nmcli con mod "System ens33" ipv4.addresses 192.168.10.195/24
sudo nmcli con mod "System ens33" ipv4.gateway 192.168.10.1
sudo nmcli con mod "System ens33" ipv4.dns "1.1.1.1 8.8.8.8"
sudo nmcli con up "System ens33"

ip route
ping -c 3 192.168.10.1
ping -c 3 1.1.1.1
curl -I http://example.com

9. 패킷 흐름 확인

방화벽 서버에서 내부망과 외부망 인터페이스를 각각 관찰하면 NAT 전후 흐름을 이해하기 쉽다.

sudo tcpdump -ni ens34 host 192.168.10.195
sudo tcpdump -ni ens33 host 1.1.1.1

10. 문제를 볼 때 순서

증상확인할 부분
client가 gateway ping 실패LAN NIC IP, 같은 subnet 여부, VM network 연결
gateway는 되지만 외부 ping 실패ip_forward, masquerade, WAN route
DNS만 실패client DNS 설정, upstream DNS reachable 여부
SSH가 외부에서 열림public zone service 목록, interface-zone 매핑

마무리

Linux 방화벽 서버는 설치 직후 바로 완성되는 장비가 아니다. NIC 역할을 나누고, IP forwarding을 켜고, firewalld zone을 정확히 배치하고, NAT를 적용한 다음 client에서 실제 통신을 확인해야 한다. 이 구조가 잡혀야 이후 DNS, DHCP, Proxy, 웹 서버 실습을 내부망에서 안정적으로 이어갈 수 있다.

문서 링크

BGM EVER