1. 빌드에 필요한 패키지 설치
apt install -y build-essential libxtables-dev git pkg-config libtool automake autoconf flex bison libmnl-dev libnftnl-dev libtext-csv-xs-perl
apt install -y linux-headers-$(uname -r)
※linux-header 설치가 실패할 경우 아래의 과정을 따른다.
uname -r
linux-headers-6.18.33-current-sunxi64
apt search linux-headers
또는
apt-cache search sunxi64
위의 과정으로 정확한 리눅스 헤더패키지 명을 알아내어 설치한다.
ex) apt -y install linux-headers-current-sunxi64
2. 최신버전 확인
https://inai.de/files/xtables-addons/
3. 확인한 최신버전 변수 생성
XTABLES_ADDONS_VER=3.30
4. 디렉토리 만들고 다운로드
mkdir work
cd work
wget --no-check-certificate "https://inai.de/files/xtables-addons/xtables-addons-${XTABLES_ADDONS_VER}.tar.zst"
#tar -xJf xtables-addons-${XTABLES_ADDONS_VER}.tar.xz
tar -I zstd -xvf xtables-addons-${XTABLES_ADDONS_VER}.tar.zst
cd xtables-addons-${XTABLES_ADDONS_VER}
5. 빌드
./configure --prefix=/usr --with-kbuild=/lib/modules/$(uname -r)/build
make
make install
depmod
6. 확인
# 1. xt_geoip 커널 모듈 로드
depmod
modprobe xt_geoip
# 2. 모듈이 정상적으로 로드되었는지 확인
lsmod | grep xt_geoip
# 3. 테스트 규칙 추가 (중국 IP 차단 예시)
iptables -A INPUT -m geoip --src-cc CN -j ACCEPT
# 4. 규칙 확인
iptables -L -v -n | grep geoip
7. 차후 커널 업데이트 금지
# 커널 패키지 고정 처리
apt-mark hold linux-image-$(uname -r) linux-headers-$(uname -r) linux-modules-$(uname -r) linux-modules-extra-$(uname -r)
apt-mark hold linux-image-generic linux-headers-generic
# 자동 업데이트 금지
systemctl stop apt-daily.timer apt-daily-upgrade.timer
systemctl disable apt-daily.timer apt-daily-upgrade.timer
systemctl stop unattended-upgrades
systemctl disable unattended-upgrades