- OpenGFW는 사용자가 직접 만들 수 있는 중국의 대형 방화벽(Great Firewall of China) 리눅스용 오픈 소스
- "이제 권력을 가진 사람들만 재미를 누릴 필요는 없으며, 검열을 누구나 가능하게 해서 사람들에게 권력을 부여할 때임"
- 집안의 라우터에 전문가처럼 필터링을 시작하고, 빅 브라더 역할을 해볼 수 있음
- 주의 : 이 프로젝트는 아직 개발 초기 단계에 있으며, 사용자의 책임 하에 사용해야 함
기능
- 전체 IP/TCP 재조립, 다양한 프로토콜 분석기(HTTP, TLS, QUIC, DNS, SSH, SOCKS4/5, WireGuard 등)
- Shadowsocks와 같은 "완전히 암호화된 트래픽" 감지 기능
- Trojan-killer를 기반으로 한 Trojan(프록시 프로토콜) 감지 기능
- [작업 중] 기계 학습 기반 트래픽 분류
- 전체 IPv4 및 IPv6 지원
- 흐름 기반 멀티코어 부하 분산
- 연결 오프로딩
- expr 기반의 강력한 규칙 엔진
- 핫-리로드 가능한 규칙(
SIGHUP 신호로 리로드)
- 유연한 분석기 및 수정기 프레임워크
- 확장 가능한 IO 구현(NFQueue만 지원)
- [작업 중] 웹 UI
사용 사례
- 광고 차단
- 부모의 자녀 통제
- 악성 소프트웨어 보호
- VPN/프록시 서비스의 남용 방지
- 트래픽 분석(로그 전용 모드)
- 독재자의 야망을 충족시키는 걸 도와줌(Help you fulfill your dictatorial ambitions)
사용법
빌드
go build
실행
export OPENGFW_LOG_LEVEL=debug
./OpenGFW -c config.yaml rules.yaml
OpenWrt
- OpenGFW는 OpenWrt 23.05에서 작동하는 것으로 테스트되었으며, 다른 버전에서도 작동할 것으로 예상되지만 검증되지 않음
- 의존성 설치:
opkg install kmod-nft-queue kmod-nf-conntrack-netlink
예제 설정
지원되는 동작
allow: 연결 허용, 추가 처리 없음
block: 연결 차단, 추가 처리 없음
drop: UDP의 경우, 규칙을 트리거한 패킷을 드롭하고, 같은 흐름의 미래 패킷 처리 계속. TCP의 경우 block과 동일
modify: UDP의 경우, 규칙을 트리거한 패킷을 주어진 수정자를 사용하여 수정하고, 같은 흐름의 미래 패킷 처리 계속. TCP의 경우 allow와 동일