原理如图:

请用macvlan方式,并给docker指定ip。需要赋予特殊权限 例如: docker run -d --name naive --network macvlan --ip 192.168.2.60 --cap-add=NET_ADMIN --cap-add=NET_RAW tonysun0319/naive:latest
在ros中部署此镜像 ,只需给一个独立ip(VETH) 。不需要映射文件夹,不需要设置环境变量,假设部署后ip是 10.0.0.2
镜像启动后,会启动两个naive进程,一个提供 socks5服务。端口是 1080
另一个以redir模式运行,并转发所有tcp流量到此进程。此时的 10.0.0.2 是一个Fake-ip网关地址。并提供 fake-dns 功能( nslookup google.com 10.0.0.2 会得到 100.64 开头的 fake-ip 地址。) ,在浏览器打开http://10.0.0.2 即可配置 naiveproxy的用户名和密码 以及gfw列表和源数据。
在ros中 添加一段静态路由 /ip route add dst-address=100.64.0.0/10 gateway=10.0.0.2
ros中 新建一个脚本<system -- Scripts -- + >,可以每天凌晨执行下面的脚本,更新ROS的静态dns分流列表 (ros 的 dns需要开启 allow remote requests)
:do {
/tool fetch url="http://10.0.0.2/api/getdns" mode=http dst-path=gfwdns.rsc
} on-error={
:log info message="fetch gfwdns.rsc failed...";
}
:if ([:len [/file find name="gfwdns.rsc"]] > 0) do={
:do {
/ip dns static remove numbers=[/ip dns static find comment=gfw]
:log info message="remove old static dns...";
} on-error={}
:do {
/import file=gfwdns.rsc
} on-error={
:log info message="import gfwdns.rsc failed...";
}
} else={
:log warning message="File gfwdns.rsc does not exist."
}
/ip route add dst-address=149.154.160.0/20 gateway=10.0.0.2
/ip route add dst-address=67.198.55.0/24 gateway=10.0.0.2
/ip route add dst-address=91.108.4.0/22 gateway=10.0.0.2
/ip route add dst-address=91.108.56.0/22 gateway=10.0.0.2
/ip route add dst-address=109.239.140.0/24 gateway=10.0.0.2
Content type
Image
Digest
sha256:7aa35ab53…
Size
21.6 MB
Last updated
over 3 years ago
docker pull tonysun0319/naive