国人其实在嵌入式内核方面其实走在了世界前列.
蒙赐一个nanopi-neo的小设备,家里本来是用hp5315的设备进行翻墙的,由于内核太低,无法使用ipset。所以迫不得已,升级到nanopi-neo
说一下过程:
一、下载官方映像文件
注意,必须是4.14内核的,而不能是3.4.39内核的,因为ipset在3.4.39里缺xt_set模块
二、烧进8G的TF卡,ssh登录
nanopi缺省是DHCP启动的,扫描整个网段
三、安装ipset并检验一下
五、安装shadowsocks-libev
shadowsocks-libev是用c写的,占内存小,效率高,在这么小的个设备上,必须用这个
为什么要建立两个DNS呢?按道理是应该用4321,因为必须考虑就近原则,通过ss通道访问国外网站时,应该以vps返回的查询结果为准,dnscrypt-proxy很可能地址定位偏移了。
六、修改dns-masq
运行dnsmasq|grep ipset确认支持ipset
然后到 https://github.com/felixonmars/dnsmasq-china-list
把4个国内加速的conf拷贝出来放到/etc/dnsmasq.d目录
解压放到/etc/dnsmasq.d目录下
最终/etc/dnsmasq.conf的内容:
重启dnsmasq就ok了
七、准备iptables
蒙赐一个nanopi-neo的小设备,家里本来是用hp5315的设备进行翻墙的,由于内核太低,无法使用ipset。所以迫不得已,升级到nanopi-neo
说一下过程:
一、下载官方映像文件
nanopi-neo_FriendlyCore-Xenial_4.14.0_20171218.img.zip
注意,必须是4.14内核的,而不能是3.4.39内核的,因为ipset在3.4.39里缺xt_set模块
二、烧进8G的TF卡,ssh登录
nanopi缺省是DHCP启动的,扫描整个网段
nmap -p22 --open 192.168.92.0/24
得到机器的大概ip,然后ssh上去,root密码是fa三、安装ipset并检验一下
apt install ipset
ipset list
modporbe xt_set
lsmod
四、安装dnscrypt-proxyapt install dnscrypt-proxy
注意,这里dnscrypt-proxy是监听在127.0.2.1:53端口的,我们改一下,方法比较古怪,因为实际是systemctl控制了监听端口,直接改/etc/default/dnscrypt-proxy是无效的!!!export SYSTEMD_EDITOR="vi"
systemctl edit dnscrypt-proxy.socket
输入以下内容
[Socket]
ListenStream=
ListenDatagram=
ListenStream=127.0.0.1:5353
ListenDatagram=127.0.0.1:5353
改好后重启,缺省用的是cisco这个开放dns五、安装shadowsocks-libev
shadowsocks-libev是用c写的,占内存小,效率高,在这么小的个设备上,必须用这个
apt-get install software-properties-common -y
add-apt-repository ppa:max-c-lv/shadowsocks-libev -y
apt-get update
编辑/etc/config.json文件 {
"server":"your-ss-server ip",
"server_port":9001,
"local_port":1080,
"password":"type this user's password",
"timeout":60,
"method":"aes-256-cfb"
}
运行:ss-redir -c /etc/config.json
同时单独建立一个DNS解析的通道,监听到本地端口4321,通过vps来转发请求到google的8.8.8.8:53ss-tunnel -s your-ss-server-ip -p 9001 -m aes-256-cfb -k password -b 127.0.0.1 -l 4321 -L 8.8.8.8:53 -u
这样本地就有了两个DNS,一个是dnscrypt-proxy,监听到5353,一个ss-tunnel,监听到4321为什么要建立两个DNS呢?按道理是应该用4321,因为必须考虑就近原则,通过ss通道访问国外网站时,应该以vps返回的查询结果为准,dnscrypt-proxy很可能地址定位偏移了。
六、修改dns-masq
运行dnsmasq|grep ipset确认支持ipset
然后到 https://github.com/felixonmars/dnsmasq-china-list
把4个国内加速的conf拷贝出来放到/etc/dnsmasq.d目录
accelerated-domains.china.conf
apple.china.conf
bogus-nxdomain.china.conf
google.china.conf
然后拿到国内ip地址的范围,没用啊,只是记录一下,说不定将来有用。wget -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /etc/chinadns_chnroute.txt
拿到https://zohead.com/downloads/dnsmasq.tar.gz 解压放到/etc/dnsmasq.d目录下
最终/etc/dnsmasq.conf的内容:
domain-needed
bogus-priv
no-resolv
no-poll
conf-dir=/etc/dnsmasq.d
address=/tms.can.cibntv.net/0.0.0.0
server=114.114.114.114
dhcp-range=192.168.2.50,192.168.2.100,72h
dhcp-option=3,192.168.2.2
dhcp-option=6,192.168.2.2
cache-size=10000
min-cache-ttl=1800
最主要的就是dnsmasq.tar.gz的内容:server=/12bet.com/127.0.0.1#5353
ipset=/12bet.com/gfwlist
很清晰,这里确定了12bet.com走本地5353端口进行dns查询,并且访问的包标记到ipset链gfwlist中,当然这里最好是用4321的dns,会符合就近解析原则重启dnsmasq就ok了
七、准备iptables
ipset -N gfwlist iphash
iptables -t nat -A PREROUTING -p tcp -m set –match-set gfwlist dst -j REDIRECT –to-port 1080
这样一切就ok了
No comments:
Post a Comment