美文网首页
通过代理实现在校园外使用校园网内的服务

通过代理实现在校园外使用校园网内的服务

作者: 眯杰 | 来源:发表于2018-04-24 21:02 被阅读0次

    2018-10-02

    • 修正树莓派错误使用64位客户端的问题
    • 更新使用frp v0.17.0;当然你也可以使用其他更新版本的 frp。

    引言

    上了大学后,开始逐渐了解到校园网内有许多资源以及页面是外网访问不到的,例如教务系统(只有特定时期才能从外网访问)、特殊管理页面、校内ftp服务器以及图书馆资源(由于版权问题,强烈不建议通过代理获取图书馆资源)等。但有我们经常会有这么一种情况:身处外网,却又对内网的访问有所需求。比如教务系统、ftp访问以及特殊管理页面登陆等。此时就需要架设代理服务器,通过代理进行内网的访问。

    准备

    • 内网主机:可以是你的win电脑(十分不推荐),也可以是其他的“不关机”的主机,建议使用Linux系统的主机,在这里我使用树莓派,系统为Raspbian(关键功耗低,10w左右)
    • 公网主机:因为各种原因,有的校园网不分配公网IP,或者你的内网主机前连接着路由器等,即存在以下情况:无法直接通过内网主机分配到的ip从外网进行访问,此时就需要公网主机。(若使用路由器,也可以免除公网主机,通过路由器内的DMZ(以及DDNS)来实现,不过本文主要来实践frp内网穿透

    原理

    本文使用frp进行内网穿透,使用*SR进行代理架设。

    有很多人会问,为什么R都已经停止维护了,还要用它。相较于其他代理方式,无论是服务端的配置难度还是客户端的易用性、兼容性,S和R都是做得比较好的。而相较于S,R的客户端的易用性最好,所以在此只写R。实际上我还是建议使用S-libev+obfs,不过这样win端就不能开http代理,因此使用情况上具有局限性;而R可以。

    步骤

    服务端配置

    #切换到root用户,你也可以不切换,不过需要在下面的命令前加上sudo
    sudo su
    
    #下载程序
    wget https://github.com/fatedier/frp/releases/download/v0.17.0/frp_0.17.0_linux_amd64.tar.gz
    
    #解压
    tar -zxvf frp_0.17.0_linux_amd64.tar.gz
    
    #切换目录
    cd frp_0.17.0_linux_arm64
    
    # 编辑frps.ini
    sudo nano frps.ini
    

    frps.ini 内容

    • bind_port 为验证的端口,一般不作改动
    • token 为自定义的值(数字如:1234567890),需要记下,并与后面配置的 frpc.ini 中的值相同
    [common]
    bind_port = 7000
    token = token_value
    

    最后启动frp服务端

    #请确保在 frp_0.13.0_linux_arm64 目录下运行
    screen ./frps -c ./frps.ini
    

    客户端配置

    #切换到root用户,你也可以不切换,不过需要在下面的命令前加上sudo
    sudo su
    
    #下载程序
    wget https://github.com/fatedier/frp/releases/download/v0.17.0/frp_0.17.0_linux_amd.tar.gz
    
    #解压
    tar -zxvf frp_0.17.0_linux_amd.tar.gz
    
    #切换目录
    cd frp_0.17.0_linux_arm
    
    # 编辑frps.ini
    sudo nano frpc.ini
    

    frpc.ini 内容

    [common]

    • server_addr 为公网服务器IP
    • bind_port 为验证的端口,一般不作改动
    • token_value 与前面配置的frps.ini中的值相同

    [ssr]

    • local_port ssr的端口
    • remote_port 你连接公网主机的端口
    [common]
    server_addr = your_server_ip
    server_port = 7000
    token = token_value
    
    [ssr]
    type = tcp
    local_ip = 127.0.0.1
    local_port = ssr_port_number
    remote_port = remote_port_number
    
    #以下可选
    [ssh]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22
    remote_port = remote_port_number
    
    

    最后启动frp客户端

    #请确保在 frp_0.13.0_linux_arm 目录下运行
    screen ./frpc -c ./frpc.ini
    

    树莓派上R的安装(这里使用了错误的方法)

    由于我这里用的 raspberry debian 系统会被一些一键脚本识别错误,可实际运行是没问题的。因此我们需要通过修改文件来使脚本运行。

    #编辑/etc/issue,将 Raspbian 改成 Debian
    nano /etc/issue
    

    执行一键安装脚本
    来源:https://github.com/ToyoDAdoubi/doubi

    wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ssr.sh && chmod +x ssr.sh && bash ssr.sh
    

    安装过程不赘述

    可能遇到的错误

    • 启动 frpc 时遇到黄字 connect failed: No route to host
      这有可能是防火墙的问题,请检查你的树莓派以及VPS的防火墙设置,开放相应ip以及端口的访问权限,请自行搜索 iptables 相关命令。

    使用

    与你们熟知的R的使用方法一致,只不过不具备「科学」的效果,因为你的树莓派在国内。R客户端的服务器IP填公网服务器IP,端口填写frpc.ini文件中[ssr]的 remote_port_number 即可。
    另外说明,你的网站访问数据都是需要经过公网主机以及内网主机的,是需要消耗vps流量的。

    最终效果

    参考资料

    借助 frp 随时随地访问自己的树莓派
    在 Raspberry Pi 上安装s*
    【frp配置教程】frp内网穿透服务端frps.ini各配置参数详解
    【frp配置教程】frp内网穿透客户端frpc.ini各配置参数详解

    后记

    或许有的人觉得我写得太详细了,或许还是有些小细节没能覆盖完全,但看得懂的人自然看得懂。在我看来,写文章的主要目的还是记录我的操作以及思考过程,用作教程分享还只是次要目的,给后来者指指路罢了。

    相关文章

      网友评论

          本文标题:通过代理实现在校园外使用校园网内的服务

          本文链接:https://www.haomeiwen.com/subject/iqyclftx.html