硬件需求

  • 需要一个可以更改静态路由的路由器。

    普通的非智能路由器,如tp-link之类,都有这个功能,所以普通路由器就可以实现了,不需要高大上的智能路由器。反而智能路由器,如小米、极路由之类没有开放这个功能。不过也没事,智能路由器都是可以刷固件的,我目前刷的padavan,信号和稳定性比原生的系统还要好。

  • 树莓派可以正常使用互联网

安装kone

kone完全基于go语言开发,实现了tun2socks和fakeip功能。fakeip非常方便,可以接管你配置的域名流量.

编译kone

kone官方直接在树莓派上面安装go,通过go来安装kone。不是非常喜欢,主要是太慢了,下载东西也慢。可以直接在我们自己电脑上面进行交叉编译。

1
2
3
4
5
go get github.com/xjdrew/kone
cd $GOPATH/src/github.com/xjdrew/kone
GOARCH=arm GOOS=linux GOARM=7 CGO_ENABLED=0 go build -ldflags '-w -s'
#上传到pi上
scp kone [email protected]:/tmp

配置树莓派

  • 把树莓派设置成路由模式(需要切换到root用户)

    1
    2
    
    echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
    sysctl -p
  • 目前我将用网线将树莓派和路由器连接上,并设置静态路由, 一般也可以不用配置静态路由,基本上ip是不会变化的。

    1
    2
    3
    4
    5
    6
    7
    
    # 在 /etc/network/interfaces,修改eth0配置
    auto eth0
    iface eth0 inet static
        address 192.168.123.2
        netmask 255.255.255.0
        gateway 192.168.123.1
        dns-nameservers 114.114.114.114

管理并启动kone

  • 修改kone的配置文件

    在代码目录misc/example/example.ini,提供了一份默认配置文件。 为了简化问题,只需要把默认配置文件拷贝到合适的目录,命名为my.ini,然后把[proxy "A"]配置项下的url改成你拥有的代理,目前支持http, socks5代理。

    1
    2
    3
    
    [proxy "A"]
    url = socks5://127.0.0.1:7891
    default = yes

    其他配置选项的含义,参考配置文件里面的说明,直接用default配置就可以.

  • 启动kone

    目前使用supervisor管理,配置文件/etc/supervisor/conf.d/kone.conf

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    [program:kone]
    user=root
    command =/home/pi/kone/kone /home/pi/kone/my.ini
    autostart = true
    startsecs = 5
    autorestart = true
    startretries = 1024
    redirect_stderr = true
    stdout_logfile_maxbytes = 10MB
    stdout_logfile_backups = 10
    stdout_logfile = /tmp/kone.log

    配置完成后supervisorctl update下就可以。

配置路由器

测试

断开wifi重新连接,查看dns默认dns是不是10.192.0.1, 并ping www.github.com看下连接地址是不是10.192.x.x, 或者使用dig命令。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 $ ping www.github.com
 PING www.github.com (10.192.47.177) 56(84) bytes of data.
 64 bytes from 10.192.47.177 (10.192.47.177): icmp_seq=1 ttl=63 time=1.70 ms
 64 bytes from 10.192.47.177 (10.192.47.177): icmp_seq=2 ttl=63 time=1.96 ms
 64 bytes from 10.192.47.177 (10.192.47.177): icmp_seq=3 ttl=63 time=1.82 ms
 64 bytes from 10.192.47.177 (10.192.47.177): icmp_seq=4 ttl=63 time=2.05 ms
 64 bytes from 10.192.47.177 (10.192.47.177): icmp_seq=5 ttl=63 time=1.98 ms
 64 bytes from 10.192.47.177 (10.192.47.177): icmp_seq=6 ttl=63 time=2.81 ms
 64 bytes from 10.192.47.177 (10.192.47.177): icmp_seq=7 ttl=63 time=2.23 ms
 ^C
 --- www.github.com ping statistics ---
 7 packets transmitted, 7 received, 0% packet loss, time 18ms
 rtt min/avg/max/mdev = 1.696/2.078/2.813/0.342 ms

安装clash

clash完全基于go语言开发,实现了完善的规则分流,自动和主备等多种选路策略。

交叉编译

具体的命令如下:

1
2
3
4
git clone https://github.com/Dreamacro/clash.git
cd clash
GOARCH=arm GOOS=linux GOARM=7 CGO_ENABLED=0 go build -ldflags '-w -s'
scp clash [email protected]:/tmp

管理并启动clash

配置clash, 具体的clash配置可以从网上下载. supervisor的配置文件/etc/supervisor/conf.d/clash.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[program:clash]
user=root
command =/home/pi/clash/clash -d /home/pi/clash
autostart = true
startsecs = 5
autorestart = true
startretries = 1024
redirect_stderr = true
stdout_logfile_maxbytes = 10MB
stdout_logfile_backups = 10
stdout_logfile = /var/log/clash.log

clash配置说明

  1. clash不需要开dns的enhance mode
  2. 也不用配置iptables导流
  3. 下载clash-dashboard,放到配置文件夹中,直接使用http://192.168.123.2:9090/ui/#/proxies管理.

参考

  1. A rule-based tunnel in Go.
  2. 在树莓派上使用kone