NAT或者家用服务器转发SSH端口

195天前 · 服务器 · 185次阅读

NAT服务器或者家里的服务器由于没有固定的公网IP,搭建Linux服务器的时候需要远程登陆很麻烦,但是我们可以用frp内网穿透工具,我们需要准备一台服务器用来做frp的服务端,通过服务器的固定ip把家里的服务器或者NAT服务器的SSH端口直接映射到公网上

安装FRP

这里以Deiban11为例,首先我们SSH登陆到服务器,先更新源

apt update

从Github下载最新的frp程序,这里以linux版为例,也可以从这里下载frp最新版

wget https://github.com/fatedier/frp/releases/download/v0.48.0/frp_0.48.0_linux_amd64.tar.gz

解压缩frp文件夹

tar -zxvf frp_0.48.0_linux_amd64.tar.gz

重命名frp文件夹

mv frp_0.48.0_linux_amd64 frp

进入到frp文件夹,里面的几个文件比较重要

  1. frpc frp的客户端运行程序
  2. frpc.ini frp客户端运行程序配置文件
  3. frps frp的服务器运行程序
  4. frps.ini frps的服务端运行程序配置文件

frps.ini配置文件必须要配置的几行配置大概意思如下

[common]
bind_addr = 0.0.0.0
##监听本机服务器 不需要修改  
bind_port = **** 
##frp服务的运行端口    
tcp_bind_port = ****
##服务端和客户端通信的端口,不能和其他端口相同 
tcp_bind_port = **** 
##服务端和客户端通信的第二个端口,不能和其他端口相同,如果有多台服务器,往下加这行配置就行
heartbeat_timeout = 30
##心跳命令,这里是每隔30秒和客户端通信一次,防止内网穿透失联

frpc.ini配置文件必须要配置的几行配置大概意思如下

[common]
server_addr = ***.***.**.*
##服务端的IP地址
server_port = ****
##服务端的frp运行端口
[ssh]
##配置名称,如果有多台frp客户端连接到一台frp服务端,这个配置名称不能相同
type = tcp
##端口类型 tcp,可以是其他的类型如udp
local_ip = 127.0.0.1
##本地地址,不需要修改
local_port = 22
需要映射的本地端口,这里是22端口
remote_port = ****
服务端和客户端通信的端口
heartbeat_timeout = 30
##心跳命令,这里是每隔30秒和客户端通信一次,防止内网穿透失联

运行frp

在需要映射的服务端和客户端修改相应的配置
服务端运行以下的命令启动

./frps -c frps.ini

客户端运行以下的命令启动

./frpc -c frpc.ini

如果配置正常,客户端和服务端都会显示连接正常的日志

frp设置开机自启

如果直接用命令启动那么当我们关闭ssh界面或者服务器断开的时候frp服务会自动断开,所以我们需要设置他开机自启并且在后台运行
由于大部分的服务器都是以root用户运行,并且默认下载路径也是在root文件夹,一般的用户权限是无法访问这个路径,所以我们需要把frp移动到其他路径去

mv frp /usr/local/etc/

在/etc/systemd/system中新建frp.service文件

touch /etc/systemd/system/frp.service

编辑frp.service文件

vim /etc/systemd/system/frp.service

把下面的配置做相应的修改然后复制粘贴

[Unit] 
Description=Frp Client Service
After=network.target 
[Service] 
Type=simple
User=nobody
Restart=on-failure 
RestartSec=5 
ExecStart=/usr/local/etc/frp/frpc -c /usr/local/etc/frp/frpc.ini
##注意这里,frpc是启动客户端,如果路径frp路径和我的一样,那么这个配置不需要修改
##如果启动服务端,那么要改成frps,frpc.ini也要改成frps.ini
ExecReload=/usr/local/etc/frp/frpc -c /usr/local/etc/frp/frpc.ini
##如上修改
[Install] 
WantedBy=multi-user.target

配置完成之后,用以下命令设置开机自启

systemctl enable frp

用下面这个命令启动frp

systemctl start frp

用下面的命令查看frp运行状态,显示running表示运行正常

systemctl status frp

注意的问题

frp设置开机自启之后,如果需要重启服务端和客户端,需要先让服务端重启,等待服务端frp显示运行正常之后在重启客户端,不然会出现莫名的问题导致客户端连接不上服务端

frp

最后修改于19天前