frp内网穿透

本例子为内网的Jetson Xavier通过公网的服务器进行穿透,然后通过windows下的ssh连接到Xavier

公网机器配置

mkdir -p /usr/local/frp
wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz
tar -zxvf frp_0.29.0_linux_amd64.tar.gz

先康康端口是否被占用了

lsof -i

修改 frps.ini 文件,这里使用了最简化的配置:

# frps.ini
[common]
bind_port = 7000

启动 frps:

./frps -c ./frps.ini

内网机器配置

sudo apt install lszrz    # 我不想给Xavier配置代理了,直接远程传输了
wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_arm64.tar.gz
tar -zxvf frp_0.29.0_linux_arm64.tar.gz

修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x;

# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

启动 frpc:

./frpc -c ./frpc.ini

通过ssh访问内网机器

通过 ssh 访问内网机器,假设用户名为 test:

ssh -oPort=6000 test@x.x.x.x

设置开机启动

sudo vim /etc/systemd/system/frpc.service

按如下修改

[Unit]
Description=frpc daemon
After=syslog.target  network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/frp/frpc -c /etc/frp/frpc.ini
Restart= always
RestartSec=1min
ExecStop=/usr/bin/killall frpc


[Install]
WantedBy=multi-user.target

使用sudo systemctl enable frpc.service启用服务

服务器端(公网机器)同理

Wait a minute

这都是在我拥有root权限下的操作,假入我没有root权限,那可咋整

先最基础的挂在后台运行吧

nohup ./frps -c frps.ini >/dev/null 2>&1 &

这里注意 >/dev/null将标准输出定向在了/dev/null>>代表append,>代表写入

2>&1将报错的输出定向到跟输出相同的位置

我发现外国小伙整了狠活,就是使用crontab 定时任务

@reboot /bin/bash /dir/of/your/script

这里script里面就写一条命令算了,将脚本和frps文件放在同一目录下

nohup ./frps -c frps.ini >/dev/null 2>&1 &

记得给脚本一个运行权限

chmod a+x frpstartup.sh

激动人心的时候到了

先切换到外网,然后在MobaXterm或者Xshell里建立新的Session

remote

此时host为公网服务器,username为内网机器的用户名

name

可以看出切换到外网之后,通过内网已经无法连接内网机器,而通过frp穿透则可以连接~

就是通过穿透连接的话,需要公网服务器也保持可连接的状态,如果使用国外的服务器的话,则连接会较慢,最好还是搞个国内的服务器转发一下,等手头宽裕的搞个阿里云吧,或者等着白嫖Amazon的也不错。

坐在屋里,连接了在我身后的Xavier,现在的我,大概和The Big Bang Theory第一季第九集里面四个nerd用电脑控制发射信号,环绕地球一圈点亮一盏灯时的所做的和心中所想的一样吧。你问我为什么?

Because I can.

后记

刚爽到一天,然后学校内服务器就因为安全检查停了,后来发现主楼网口连接的设备是可以通过学校wifi进行连接的。所以正好把闲着的树莓派当作跳板。不过注意树莓派是32位的,下载frp要arm32位版本。

复制粘贴的时候记得在vim中输入

:set mouse=r
Last modification:October 31, 2019
恰饭环节