标签: shadowsocks

  • 树莓派3B/3B+刷OpenWRT原生img 作为旁路由让全屋免配置上机场(二)

    树莓派3B/3B+刷OpenWRT原生img 作为旁路由让全屋免配置上机场(二)

    接上部分:树莓派3B/3B+刷OpenWRT原生img 作为旁路由让全屋免配置上机场(一)

    这部分是安装工具和应用部分,ITGeeker在不下于两套系统做了测试,该套方案全部可行。根据实践已完成技术奇客原创网络拓扑图设计v1:

    具体如何配置以后补上,估计会涉及一些敏感词汇,所以会尽量避开具体软件的名称。

    2020年4月20日 更新

    by itgeeker.net

    OpenWRT先更改一下国内镜像

    可以参看:OpenWRT如何使用国内镜像

    这对后面顺利安装组件及依赖包很重要。

    添加OpenWrt-dist源

    官方介绍在此: OpenWrt-dist 是专门针对OpenWRT的一个源,里面包含了很多已编译好的ipk文件,极大的方便了OpenWRT的用户。

    通过此源可以方便安装诸如以下组件:

    • opkg update
    • opkg install ChinaDNS
    • opkg install luci-app-chinadns
    • opkg install dns-forwarder
    • opkg install luci-app-dns-forwarder
    • opkg install shadowsocks-libev
    • opkg install luci-app-shadowsocks
    • opkg install simple-obfs
    • opkg install ShadowVPN
    • opkg install luci-app-shadowvpn

    OpenWRT获取设备架构命令:

    opkg print-architecture | awk '{print $2}'

    此处我们讨论的树莓派3B/3B+是同一个架构aarch64_cortex-a53,所以可以通过sed来添加对应的源:

    echo "src/gz openwrt_dist http://openwrt-dist.sourceforge.net/packages/base/aarch64_cortex-a53
    src/gz openwrt_dist_luci http://openwrt-dist.sourceforge.net/packages/luci" >> /etc/opkg/customfeeds.conf

    通过OpenWrt-dist安装代理相关组件

    opkg update
    
    opkg install ChinaDNS luci-app-chinadns dns-forwarder luci-app-dns-forwarder shadowsocks-libev luci-app-shadowsocks simple-obfs

    这里技术奇客ITGeeker同时安装了simple-obfs混淆插件,不过后面如果通过luci界面配置ss时添加obfs参数后无法正常启动ss,但是可以通过修改或添加新的服务启动ss命令,绕过luci界面配置可以实现正常启动。

    使用混淆是因为我的代理服务器支持obfs配置,而且工作的非常好。

    by itgeeker.net
    OpenWRT通过luci界面的services服务菜单配置组件出错的解决方案

    OpenWRT 19.07.2在通过luci的服务菜单配置组件,会抛出一堆错误,无法打开组件配置界面的问题,类似:

    Failed to execute cbi dispatcher target for entry '/admin/services/v2ray/global'.
    The called action terminated with an exception:
    /usr/lib/lua/luci/dispatcher.lua:938: module 'luci.cbi' not found:
    	no field package.preload['luci.cbi']
    	no file './luci/cbi.lua'
    	no file '/usr/share/lua/luci/cbi.lua'
    	no file '/usr/share/lua/luci/cbi/init.lua'
    	no file '/usr/lib/lua/luci/cbi.lua'
    	no file '/usr/lib/lua/luci/cbi/init.lua'
    	no file './luci/cbi.so'
    	no file '/usr/lib/lua/luci/cbi.so'
    	no file '/usr/lib/lua/loadall.so'
    	no file './luci.so'
    	no file '/usr/lib/lua/luci.so'
    	no file '/usr/lib/lua/loadall.so'

    可以通过安装以下组件予以解决:

    opkg install luci luci-base luci-compat

    可选和必选组件安装

    opkg install vsftpd openssh-sftp-server ipset libustream-mbedtls wget bind-dig ca-certificates iptables-mod-tproxy ip-full ca-bundle coreutils-base64 iptables-mod-nat-extra libpthread curl 

    这里包含了一些必须的组件,比如wget,https支持,ipset以及curl等后面必要的组件,也有一些可选的,比如fsftpd就是使用sftp软件,比如使用filezilla连接到树莓派就可以使用该服务。

    by itgeeker.net
    OpenWRT启动sftp服务
    /etc/init.d/vsftpd enable && /etc/init.d/vsftpd start

    重要的dnsmasq-full安装

    openwrt的默认dnsmasq并不支持ipset,需要安装dnsmasq-full版本。ipset是为了支持对域名的转发代理,而chinadns是对ip进行转发代理。所以如果你选择域名匹配的方式走代理,则需要安装dnsmasq-full版本。这里就有了一个问题,当卸载dnsmasq之后,无法解析域名,也就无法安装dnsmasq-full了。这里需要卸载和安装同步进行以避免此类问题。代码如下:

    opkg remove dnsmasq && opkg install dnsmasq-full

    至此,技术奇客已完成了相关的组件及应用的安装,接下来会发布针对各个应用/服务组件的配置指导。

    by itgeeker.net

    ITGeeker这介绍一下关于拓扑图的逻辑思路:

    shadowsocks-libev包含 ss-local、ss-redir 和 ss-tunnel 三个组件。

    by itgeeker.net
    • ss-redir 负责将 OpenWrt 的 TCP/UDP 出口流量透明地转发至ss代理服务器;
    • ss-local 是本地 SOCKS5 代理服务器,可额外地为浏览器等客户端应用提供 SOCKS5 代理服务;
    • ss-tunnel 负责转发本地 DNS 请求至 ss-server,借由 ss-server 连接指定的境外 DNS 服务器。
    • Dnsmaq-full 是 OpenWrt 的系统级 DNS 转发服务器,本方案下 Dnsmaq 接收来自局域网的 DNS 请求后直接转发给 ChinaDNS 处理;
    • ChinaDNS 利用国内 DNS 和 ss-tunnel 链接的ss-server的DNS,可解决 DNS 污染问题;
    • dns-forwared和ss-tunnel 作用类似,但似乎比后者更好用些。

    OpenWRT代理配置方法:

    OpenWRT SS服务配置

    OpenWRT安装的SS使用luci界面设置参数比较少,建议分三个配置设置:

    ss-local -c /etc/shadowsocks_local.json -u -v
    ss-redir -c /etc/shadowsocks_redir.json -u -v
    ss-tunnel -c /etc/shadowsocks_tunnel.json -L 8.8.8.8:53 -u -v

    下面是ss-local的配置示例,可用上面的命令测试是否能成功连接,确定端口61080是否打开,ss-local和ss-tunnel配置类似,local_port一定不同。

    echo '{
      "server":"xxx.xxx.xxx",
      "local_address": "0.0.0.0",
      "local_port":61080,
      "server_port":9999,
      "password":"PPPpppPPP",
      "timeout":300,
      "method":"aes-256-gcm",
      "remarks": "Your-SS-Server",
      "plugin": "obfs-local",
      "plugin_opts": "obfs=tls",
      "plugin_args": "obfs=http;obfs-host=www.baidu.com;fast-open",
      "fast_open": true
    }' > /etc/shadowsocks_local.json
    cat /etc/shadowsocks_local.json

    添加ss openwrt启动脚本:

    echo "#!/bin/sh /etc/rc.common
    
    START=95
    
    SERVICE_USE_PID=1
    SERVICE_WRITE_PID=1
    SERVICE_DAEMONIZE=1
    SERVICE_PID_FILE=/var/run/ss_local.pid
    CONFIG=/etc/shadowsocks_obfs.json
    
    start() {
     # Proxy Mode
     service_start /usr/bin/ss-local -c /etc/shadowsocks_local.json -f /var/run/ss_local.pid
     service_start /usr/bin/ss-redir -c /etc/shadowsocks_redir.json -u -v -f /var/run/ss_redir.pid
     service_start /usr/bin/ss-tunnel -c /etc/shadowsocks_tunnel.json -L 8.8.8.8:53 -u -v -f /var/run/ss_tunnel.pid
    }
    
    stop() {
     # Proxy Mode
     service_stop /usr/bin/ss-local
     service_stop /usr/bin/ss-redir
     service_stop /usr/bin/ss-tunnel
    }" > /etc/init.d/ss
    cat /etc/init.d/ss
    ```
    chmod +x /etc/init.d/ss
    /etc/init.d/ss start
    /etc/init.d/ss enable
    
    killall ss-local
    killall ss-redir
    killall ss-tunnel
    killall ss-redir ss-local ss-tunnel

    OpenWRT DNS-Forwarder配置

    Listen Port         5353   #默认是5300

    Listen Address      0.0.0.0

    DNS Server          8.8.8.8

    OpenWRT dnsmasq-full配置

    此配置dnsmasq的主要作用是ipset需要代理的域名,传递给iptables使用。

    cd /etc/dnsmasq.d && wget https://cokebar.github.io/gfwlist2dnsmasq/dnsmasq_gfwlist_ipset.conf
    
    #若下载错误,请安装
    opkg install libustream-mbedtls coreutils-base64 ca-certificates ca-bundle

    dnsmasq_gfwlist_ipset.conf的每条命令

    server=/hp.com/127.0.0.1#5353
    ipset=/hp.com/gfwlist

    如果不是#5353,请修改为DNS-Forwarder的监听端口

    ipset后面的gfwlist要和下面的防火墙iptables命令行相对应。

    by itgeeker.net
    # 重启dnsmasq
    /etc/init.d/dnsmasq restart

    OpenWRT luci路由、防火墙ipset配置

     把dnsmasq中 ipset为 gfwlist的流量转发到ss-redir端口60800,命令行输入

    ipset -N gfwlist iphash
    iptables -t nat -A PREROUTING -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 60800
    iptables -t nat -A OUTPUT -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 60800
    ipset add gfwlist 8.8.8.8
    # 重启防火墙
    /etc/init.d/firewall reload

    把上面的iptables命令添加到OpenWrt 管理界面面 Network -> Firewall -> Custom Rules,以后就不用每次输入了。

    理论上到此配置就完成了,可以自由通过代理上网了,如果还不行:

    1. 试着把主路由Lan口的自定义DNS设为旁路由的ip地址例如:192.168.1.2;
    2. 检查旁路由的端口 netstat -nplt,看看是不是所有服务都起来了;
    3. 试着重启主路由和旁路由再试试;
    4. 重启电脑再试试;
    5. 手机使用谷歌Play前需断开wifi重连,油管不用;
    6. 比较好的测试方式是用手机的chrome浏览器打开https://twitter.com
    7. 检查ss-local的socks5是否连通:curl -x socks5://127.0.0.1:61080 google.com
    8. 找个懂的人问问吧

    虽然obfs混淆不被ss支持了,但使用起来还是没有问题的。不过最近服务器支持V2ray了,所以又用OpenWRT配置了V2ray的透明代理,或者说是网关,ITGeeker喜欢把它叫成旁路由,但是这有区别吗?

    by itgeeker.net

    V2ray其实相当于打包了好多上面的应用,安装起来比较方便,功能强大了很多,但配置起来却不是更方便,幸亏openwrt版的内置配置很有用,即将分享!

    树莓派刷原生OpenWRT 安装V2ray作为旁路由(网关或透明代理)让全屋免配置走代理

    by itgeeker.net
  • Centos7 64bit安装shadowsocks 如何使用sslocal配置本地代理

    本文不是关于如何假设shadowsocks服务器,关于ss服务器假设,网上搜一下很多,也已经很详细了。

    此处技术奇客ITGeeker分享的是关于:

    如何使用本地服务器连接远程或者海外shadowsocks服务器,使得本地局域网内的电脑可以通过代理方便的上网。

    Shadowsocks_logo

    1. 首先要有一个可以使用的shadowsocks服务器,免费的,或者自己假设的都可以。
    2. 其次是要有局域网服务器,Centos7 64bit系统,或者其它Linux系统。

    第一步、 安装shadowsocks

    yum install python-pip
    pip install shadowsocks

    很快很方便,其它编译或者脚本自动安装,请自行搜索。好像编译安装的服务是叫ss-local,多了个中横线。

    第二步、 添加shadowsocks配置文件

    vim /etc/shadowsocks/config.json
    
    {
      "server":"1.1.1.1",                      #可以使用的ss服务器IP
      "server_port":1035,                      #ss服务器端口
      "local_address": "0.0.0.0",            #本地ip 注意:不要使用127.0.0.1或192.168.1.100等服务器ip,否则局域网内电脑服务连接代理服务器
      "local_port":1080,                       #本地端口
      "password":"password",                   #连接ss服务器密码
      "timeout":600,                           #等待超时
      "method":"rc4-md5",                      #加密方式
    }
    

    此处一定要注意填写的local_address ip

    第三步、 启动sslocal服务

     nohup sslocal -c /etc/shadowsocks/config.json /dev/null 2>&1 &
    
    检查是否成功启动
    netstat -lnp|grep 1080
    
    然后加入开机自启动
    echo " nohup sslocal -c /etc/shadowsocks/config.json /dev/null 2>&1 &" /etc/rc.local
    
    查看后台进程
    # ps aux |grep sslocal |grep -v "grep"
    
    关闭sslocal进程
    kill -9 端口号
    

    第四步、 配置Chrome浏览器SwitchyOmega代理

    1. 安装代理插件SwitchyOmega,这个代理现在被托管在github,没有代理之前是不能从谷歌商店安装这个插件的,所以从https://github.com/FelisCatus/SwitchyOmega/releases/ (这个是chrome的)下载插件,然后浏览器地址打开chrome://extensions/,将下载的插件托进去安装。
    2. 安装好插件后新建情景模式比如命名为SS,其他默认之后创建,之后在代理协议选择SOCKS5,地址为192.168.1.100(你本地的服务器真实ip地址), 端口默认1080 。然后保存即应用选项。
    3. 接着点击自动切换,上面的不用管,在按照规则列表匹配请求后面选择刚才新建的SS,默认情景模式选择直接连接。点击应用选项保存。
    4. 再往下规则列表设置选择AutoProxy 然后将这个地址https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt填进去,点击下面的立即更新情景模式,会有提示更新成功!

    打开https://www.youtube.com试试!Happy hours~

     

奇客罗方公众号 奇客罗方小程序 奇客罗方客服 ITGeeker Telegram

网站由ITGeeker技术奇客开发并管理;隶属于GeekerCloud奇客罗方智能科技
Site designed and developed by ITGeekerwhich is a sub-website of GeekerCloud
网站地图 | 沪ICP备2021031434号-4