使用 shadowsocks + frp 完全的访问内网资源
发布于 2022-10-27
需求
公司的很多资源都是限制内网访问的, 如 git 仓库, 内部网站等. 当然公司一般也会提供 VPN 给员工, 但最近公司提供的 VPN 不太好用. 就想着用放在公司的电脑做代理, 是不是就可以远程访问内部资源了.
更多的是出于学习的目的, 有了这次实践.
要求
- 一台有固定公网 IP 的云服务器 (我的是阿里云 ECS Ubuntu)
- 一台放在公司的个人电脑 (我的是 Macbook Pro)
- 一台放在外网(家里)的个人电脑 (我的是 Manjaro KDE)
原理
在 Mac 上开启 shadowsocks 服务, 借助 frp 将 Mac 上的 shadowsocks 服务端口映射到 ECS 的某个端口.
在 Manjaro 上开启 shandowsocks 客户端, 指定的 shandowsocks 服务器 IP 为 ECS 的公网 IP, 端口为 ECS 上的端口.
在 Manjaro 上浏览器借助 SwitchyOmega
走代理, ssh git 借助 netcat
走代理.
步骤和配置
ECS 安装 frp 服务端
安装 frp
# 下载 frp wget https://github.com/fatedier/frp/releases/download/v0.45.0/frp_0.45.0_linux_amd64.tar.gz # 解压 frp tar -xvf frp_0.45.0_linux_amd64.tar.gz # 移动命令和配置 cd frp_0.45.0_linux_amd64 sudo mv frps /usr/bin/ sudo mkdir /etc/frp sudo mv frps.ini /etc/frp
frps.ini 配置
[common] bind_port = 7000 dashboard_port = 7500 token = YOUR_TOKEN dashboard_user = YOUR_USER dashboard_pwd = YOUR_PWD
启动 frp 服务
nohup frps -c /etc/frp/frps.ini >/var/log/frps.log 2>&1 &
- 记得在 ECS 管理后台开启相应的端口访问
Mac 安装 shadowsocks 服务端和 frp 客户端
使用
brew
安装brew install frpc shadowsocks-libev
frpc.ini 配置
[common] server_addr = YOUR_ECS_IP server_port = 7000 token = YOUR_TOKEN [mac-sss] type = tcp local_ip = 127.0.0.1 local_port = 8388 remote_port = 2388
shadowsocks 配置
{ "server":["::0","0.0.0.0"], "server_port":8388, "method":"chacha20-ietf-poly1305", "password":"YOUR_PASSWORD", "timeout":600, "mode":"tcp_only", "fast_open":false }
启动 shadowsocks 和 frp
# 开启 shadowsocks 服务端 ss-server -c /usr/local/etc/shadowsocks-libev-server.json # 开启 frp 客户端 frpc -c /usr/local/etc/frp/frpc.ini
Manjaro 安装 shadowsocks 客户端
安装 shadowsocks 和 netcat
sudo pacman -S shadowsocks-libev openbsd-netcat
启动 shadowsocks
ss-local -s ECS_IP -p 2288 -l 1088 -m chacha20-ietf-poly1305 -k YOUR_PASSWORD
ssh git 代理配置
Host your_company.com Hostname your_company.com ProxyCommand nc -x 127.0.0.1:1080 %h %p
- SwitchyOmega 配置 不再赘述