Skip to content

GfwList Support

Jian Chang edited this page Apr 19, 2018 · 7 revisions

原理

此功能是访问控制功能的扩展应用, 在 ipset ss_spec_dst_bp 中设置 0.0.0.0/1128.0.0.0/1 后, 所有 IP 都不使用 SS 代理了, 而 ipset ss_spec_dst_fw 中的 IP 是会被强制使用 SS 代理的, 且 ss_spec_dst_fw 的优先级要高于 ss_spec_dst_bp, 所以可以达到使用 GfwList 的目的.

使用

  1. 进入 Luci 界面 -> 访问控制 -> 外网区域
    「被忽略IP列表」 选择留空(/dev/null)
    「额外被忽略IP」 设置为 0.0.0.0/1128.0.0.0/1

  2. 对于 GfwList 中的 IP 地址, 可以直接添加到「强制走代理IP」里
    也可以保存为一个 IP 列表文件后将列表文件路径填到「走代理IP列表」里

  3. 对于 GfwList 中的域名, 新建一个 dnsmasq 的配置文件, 里面写入类似如下的内容

# 使用不受污染干扰的 DNS 解析该域名
server=/google.com/127.0.0.1#5353
# 将解析出来的结果保存到名为 gfwlist 的 ipset 表中
ipset=/google.com/gfwlist

您也可以使用 gfwlist2dnsmasq 更方便的生成 dnsmasq 配置文件

  1. 然后依次执行以下命令
ipset create gfwlist hash:ip
iptables -t nat -I SS_SPEC_WAN_AC 1 -m set --match-set gfwlist dst -j SS_SPEC_WAN_FW
/etc/init.d/dnsmasq restart

补充说明

每次重启 shadowsocks 后 SS_SPEC_WAN_AC 都会被销毁重建, 所以您需要在每次重启 shadowsocks 后执行以下命令

iptables -t nat -I SS_SPEC_WAN_AC 1 -m set --match-set gfwlist dst -j SS_SPEC_WAN_FW