ssr

访问校内网资源

需求现状: 回家之后需要访问学校内网资源学习,手头闲置一枚树莓派,用树莓派作转发服务器.

问题简述:

  1. 树莓派无公网ip,故需要先对树莓派进行内网穿透. 使用frp
  2. 通过树莓派进行http转发

设备要求: 公网ip的服务器一台,树莓派一个

步骤

  1. 内网穿透 参考知乎

    • 公网服务器配置

      1
      2
      3
      4
      wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_amd64.tar.gz
      tar -zxvf frp_0.22.0_linux_amd64.tar.gz
      cd frp_0.22.0_linux_amd64
      nano frps.ini

      配置内容如下

      1
      2
      3
      4
      5
      6
      7
      [common]
      bind_port = 7000
      vhost_http_port = 80
      dashboard_port = dashboard_port_number
      dashboard_user = dashboard_user_name
      dashboard_pwd = dashboard_pwd_value
      privilege_token = privilege_token_value

      ctrl+o 保存,之后 回车 确认,然后 ctrl+x 退出。

      参数说明

      1
      2
      3
      4
      5
      6
      bind_port:绑定的端口,需要与客户端中 server_port 参数保持一致
      vhost_http_port:虚拟主机运行在本机的端口,如果 vps 有服务占用了端口,应当更换
      dashboard_port:frp 后台服务页面的端口,如果设置 8000,便可通过 http://yourip:8000 来访问 frps 的后台页面
      dashboard_user:frp 后台服务页面的管理员用户名
      dashboard_pwd:frp 后台服务页面的管理员密码
      privilege_token:自定义值,必须与客户端中的 privilege_token 保持一致

      配置完成之后,便可以通过如下命令启动 frps:

      1
      ./frps -c ./frps.ini

      为了让服务器一直运行 frp 服务,这里还可以将它添加到开机自启脚本中,命令行如下:

      1
      sudo nano /etc/rc.local

      在 exit 0 前一行,写上命令,其中 为你 frp 存放的目录位置,即:

      1
      <your_frp_path>/frps -c <your_frp_path>/frps.ini

      ctrl+o 保存,之后 回车 确认,然后 ctrl+x 退出。

    • 客户端配置 - frpc

      1
      2
      3
      4
      wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_arm.tar.gz
      tar -zxvf frp_0.22.0_linux_arm.tar.gz
      cd frp_0.22.0_linux_arm
      nano frpc.ini

      配置文件内容如下:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      [common]
      server_addr = your_server_ip
      server_port = 7000
      privilege_token = privilege_token_value
      login_fail_exit = false
      [ssh]
      type = tcp
      local_ip = 127.0.0.1
      local_port = 22
      remote_port = remote_port_number

      ctrl+o 保存,之后 回车 确认,然后 ctrl+x 退出。

      参数说明

      1
      2
      3
      4
      5
      server_addr:服务器端的 ip
      server_port:服务器端的端口,即 bind_port
      privilege_token:同服务器端的 privilege_token 保持一致
      login_fail_exit:失败时自动重连
      remote_port:远程端口,即 ssh 连接树莓派时的端口

      配置完成之后,便可以通过如下命令启动 frps:

      1
      ./frpc -c ./frpc.ini

      为了让树莓派一直运行 frp 服务,这里还可以将它添加到开机自启脚本中,命令行如下:

      1
      sudo nano /etc/rc.local

      在 exit 0 前一行,写上命令,其中 为你 frp 存放的目录位置,即:

      1
      <your_frp_path>/frps -c <your_frp_path>/frps.ini

      ctrl+o 保存,之后 回车 确认,然后 ctrl+x 退出。

    • ssh 连接

      以上配置完成之后,就可以远程 ssh 连接到树莓派了。命令行如下:

      1
      ssh -oPort=<remote_port_number> pi@<your_server_ip>

      其中, 为树莓派配置中的 remote_port 参数值, 为服务器 ip。

      注意:重启之后树莓派可能需要一到两分钟才能正常使用

  2. http 转发

    在树莓派上搭建ss服务端,自己电脑上搭建ss客户端即可,具体请参考

    按照上述教程搭建完成之后,假设服务器端口为(默认为9702),
    将下面内容添加到树莓派的 frpc.ini 中

    1
    2
    3
    4
    5
    [ssr]
    type = tcp
    local_ip = 127.0.0.1
    local_port = your_ss_port
    remote_port = access_port

    参数说明

    1
    2
    local_port: <your_ss_port>(默认为9702)
    remote_port: 自己电脑上的ss客户端连接树莓派时的端口哦
    • 重启树莓派,等待2-3分钟,电脑使用刚刚搭建的ss通路访问学校内网资源