简介
每一个跨境电商老板,都会面临一个问题。首先我们肯定是要到墙外和老外做生意,其次我们如何保证自己的员工来到海外环境后,只和老外做生意,而不去触碰违法红线呢?(如发表不当言论,或看P站)
今天我们就使用一款工具:OpenGFW 。来在软路由中自己建设一道审查墙,我们自己来控制,哪些网站不能看,哪些网站可以看。哪些设备不能访问,哪些设备可以访问。
本文所需工具下载
下载链接:https://pan.quark.cn/s/18ee63ea02b1
- rules.yaml:规则文件
- config.yaml:配置文件
- OpenGFW-linux-arm64:arm64版
- OpenGFW-linux-386:x86版
- OpenGFW-linux-amd64:amd64版
- finalshell_install.exe:连接工具
使用命令查看自己的路由器系统适用于哪个OpenGFW版本
# 查看系统处理器架构
uname -m
教程
1、将OpenGFW运行文件上传至软路由
我使用的是IIS Web 服务器方法(详细操作见视频),将 OpenGFW 和 config.yaml rules.yaml 上传至路由器
# 在IIS Web服务器的MIME类型中添加
文件扩展名:.
MIME类型:application/octet-stream
文件扩展名:.yaml
MIME类型:application/x-yaml
# 下载到路由器
wget http://192.168.2.247/OpenGFW-linux-arm64
wget http://192.168.2.247/config.yaml
wget http://192.168.2.247/rules.yaml
2、运行
登陆路由器的ssh端口,使用命令将路由器的opkg包进行更新
# 将 opkg 更新到最新
opkg update
# 安装 OpenGFW 所需依赖
opkg install nftables kmod-nft-queue kmod-nf-conntrack-netlink
# 运行 OpenGFW
chmod +x OpenGFW-linux-arm64
./OpenGFW-linux-arm64 -c config.yaml rules.yaml
# 后台运行 OpenGFW
nohup ./OpenGFW-linux-arm64 -c config.yaml rules.yaml > /tmp/opengfw.log 2>&1 &
3、规则配置
#记录 SNI 中包含特定关键字的连接
- name: log horny people
log: true
expr: let sni = string(tls?.req?.sni); sni contains "porn" || sni contains "hentai"
#阻断访问 v2ex.com 的 HTTP/HTTPS/QUIC 连接
- name: block v2ex http
action: block
expr: string(http?.req?.headers?.host) endsWith "v2ex.com"
- name: block v2ex https
action: block
expr: string(tls?.req?.sni) endsWith "v2ex.com"
- name: block v2ex quic
action: block
expr: string(quic?.req?.sni) endsWith "v2ex.com"
#阻断并记录 Shadowsocks, VMess, Trojan 连接
- name: block shadowsocks and vmess
action: block
log: true
expr: fet != nil && fet.yes
- name: block trojan
action: block
log: true
expr: trojan != nil && trojan.yes
#将 v2ex.com 域名 DNS 污染到 0.0.0.0 和 ::
- name: v2ex dns poisoning
action: modify
modifier:
name: dns
args:
a: "0.0.0.0"
aaaa: "::"
expr: dns != nil && dns.qr && any(dns.questions, {.name endsWith "v2ex.com"})
#阻断 SOCKS 代理访问 google.com:80
- name: block google socks
action: block
expr: string(socks?.req?.addr) endsWith "google.com" && socks?.req?.port == 80
#根据握手响应阻断 WireGuard
- name: block wireguard by handshake response
action: drop
expr: wireguard?.handshake_response?.receiver_index_matched == true
#根据 GeoSite 数据库阻断 Bilibili 的所有域名
- name: block bilibili geosite
action: block
expr: geosite(string(tls?.req?.sni), "bilibili")
#根据 GeoIP 数据库阻断所有目标 IP 为中国的连接
- name: block CN geoip
action: block
expr: geoip(string(ip.dst), "cn")
#根据 CIDR 阻断特定 IP 段的连接
- name: block cidr
action: block
expr: cidr(string(ip.dst), "192.168.0.0/16")