방화벽 역할 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 | 예시 | 역할 |
|---|---|---|
ens33 | DHCP 또는 외부망 IP | WAN, 패키지 설치와 외부 통신 |
ens34 | 192.168.10.1/24 | LAN, 내부 실습망 gateway |
1. 설치 후 NIC 확인
cat /etc/os-release
ip -br link
ip -br addr
nmcli dev status
nmcli con showNIC 이름은 환경마다 다르다. 아래 명령에서 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 -v3. 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 route4. 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_forward5. 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-all6. NAT masquerade 설정
내부망 client가 외부로 나갈 수 있도록 public zone에 masquerade를 켠다.
sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --reload
firewall-cmd --zone=public --query-masquerade7. 내부 관리 서비스 제한
방화벽 서버 자체의 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-services8. 내부 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.com9. 패킷 흐름 확인
방화벽 서버에서 내부망과 외부망 인터페이스를 각각 관찰하면 NAT 전후 흐름을 이해하기 쉽다.
sudo tcpdump -ni ens34 host 192.168.10.195
sudo tcpdump -ni ens33 host 1.1.1.110. 문제를 볼 때 순서
| 증상 | 확인할 부분 |
|---|---|
| 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, 웹 서버 실습을 내부망에서 안정적으로 이어갈 수 있다.