Files
server-docs/xdp-firewall-setup.md
kaffa db06db9200 Update XDP config: reduce max entries to 100,000
- MAX_BLOCK, MAX_RL_IP, MAX_RL_FLOW: 2,000,000 → 100,000
- Memory usage: ~1GB → ~60MB

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 17:26:38 +09:00

3.8 KiB

XDP Firewall 설정

이 서버의 XDP 기반 DDoS 방어 설정 문서

개요

  • 도구: XDP-Firewall
  • 설치 위치: /home/admin/XDP-Firewall
  • 설정 파일: /etc/xdpfw/xdpfw.conf
  • 모드: DRV/native (고성능)

방어 구조

인터넷 → Cloudflare (250 req/10s) → Linode DDoS (~40Gbps) → XDP (250 Pps)
         L7 Rate Limit              업스트림 필터링         L3/L4 필터

현재 설정

컴파일 옵션 (src/common/config.h)

항목 설명
MAX_BLOCK 100,000 최대 차단 IP 수
MAX_RL_IP 100,000 IP Rate Limit 맵 크기
MAX_RL_FLOW 100,000 Flow Rate Limit 맵 크기
ENABLE_RL_IP 활성화 IP 기반 Rate Limit
ENABLE_RL_FLOW 활성화 Flow 기반 Rate Limit

필터 규칙 (26개)

순서 대상 동작
1-2 Tailscale (100.64.0.0/10, fd7a:115c:a1e0::/48) 허용
3-17 Cloudflare IPv4 (15개 대역) 허용
18-24 Cloudflare IPv6 (7개 대역) 허용
25 250 Pps 초과 60초 차단
26 나머지 허용

Rate Limit 설정

명령어

서비스 관리

# 상태 확인
sudo systemctl status xdpfw.service

# 재시작
sudo systemctl restart xdpfw.service

# 로그 확인
sudo tail -f /var/log/xdpfw.log

# 필터 목록 보기
sudo xdpfw -l

패킷 통계 확인

# 실시간 통계
sudo bpftool map dump name map_stats

# 차단된 IP 확인
sudo bpftool map dump name map_block

동적 규칙 추가/삭제

# 특정 IP 차단 (60초)
sudo xdpfw-add -m 2 -d 1.2.3.4 -e 60

# 특정 IP 차단 해제
sudo xdpfw-del -m 2 -d 1.2.3.4

# Rate Limit 규칙 추가
sudo xdpfw-add -m 0 --pps 1000 --action 0 --block-time 30

화이트리스트

Tailscale

  • IPv4: 100.64.0.0/10
  • IPv6: fd7a:115c:a1e0::/48

Cloudflare IPv4

173.245.48.0/20
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
141.101.64.0/18
108.162.192.0/18
190.93.240.0/20
188.114.96.0/20
197.234.240.0/22
198.41.128.0/17
162.158.0.0/15
104.16.0.0/13
104.24.0.0/14
172.64.0.0/13
131.0.72.0/22

Cloudflare IPv6

2400:cb00::/32
2606:4700::/32
2803:f800::/32
2405:b500::/32
2405:8100::/32
2a06:98c0::/29
2c0f:f248::/32

성능

항목 수치
XDP 처리 능력 2-5M Pps
최대 차단 IP 100,000개
메모리 사용 ~60MB (BPF 맵)
CPU 사용 최소 (커널 바이패스)

방어 능력

시나리오 방어 가능 IP 수
250 Pps/IP 공격 ~10,000개
1,000 Pps/IP 공격 ~5,000개
5,000 Pps/IP 공격 ~1,000개

재컴파일 방법

설정 변경 후 재컴파일 필요:

cd /home/admin/XDP-Firewall

# 설정 수정
nano src/common/config.h

# 재컴파일
sudo systemctl stop xdpfw.service
make clean && make
sudo make install
sudo systemctl start xdpfw.service

Cloudflare IP 업데이트

Cloudflare IP가 변경되면 설정 업데이트 필요:

# 최신 IP 확인
curl https://www.cloudflare.com/ips-v4/
curl https://www.cloudflare.com/ips-v6/

# 설정 수정
sudo nano /etc/xdpfw/xdpfw.conf

# 적용
sudo systemctl restart xdpfw.service

참고 자료