| 2025-02-23
在 Linux 下配置内网穿透,关键在于选择合适的工具,如花生壳、frp、ngrok 等,然后按照相应工具的安装和配置步骤,完成服务端和客户端的设置,实现内网服务对外网的暴露。
一、内网穿透原理与常用工具
(一)内网穿透原理
内网穿透是将处于内网环境中的设备或服务,通过特定技术和工具,使其能够被外网访问。在大多数网络环境中,内网设备使用的是私有 IP 地址,无法直接被外网识别和访问。内网穿透工具通过在公网服务器和内网设备之间建立连接通道,将外网的访问请求转发到内网设备,从而实现内网服务的对外暴露。
(二)常用工具介绍
1.花生壳:花生壳是一款知名的内网穿透和动态域名解析软件,支持多种操作系统,包括 Linux。它具有操作简单、稳定性高的特点,提供了丰富的功能,如端口映射、动态域名解析等。用户只需在花生壳官网注册账号,下载并安装 Linux 版本的花生壳客户端,即可轻松实现内网穿透。
2.frp:frp(Fast Reverse Proxy)是一个高性能的反向代理工具,采用客户端 - 服务端架构。用户需要在内网和外网分别部署 frp 客户端和 frp 服务端。frp 支持 TCP、UDP 和 HTTP 等多种协议,可根据需求配置不同协议的转发,还支持自定义域名和端口映射,通过配置文件灵活设置转发规则。同时,frp 提供流量加密、身份验证和流量限制等特性,增强网络安全性。
3.ngrok:ngrok 是一个基于 Go 语言开发的反向代理软件,能将内网设备映射到外网实现内网穿透。ngrok 使用简单,启动后会生成一个公网地址,用户可通过该地址访问内网设备。但 ngrok 免费版的功能相对有限,且部分地区网络访问可能存在不稳定的情况。
二、使用花生壳配置内网穿透
(一)下载与安装
1.官网下载:访问花生壳官网,找到 Linux 版本的下载链接。在 Linux 终端中,使用 wget 命令下载安装包,例如:wget "https://dl.oray.com/hsk/linux/phddns_5.3.0_amd64.deb" -O phddns_5.3.0_amd64.deb 。如果无法使用 wget 命令,也可以在浏览器中下载安装包,然后上传到 Linux 服务器。
2.解压安装:下载完成后,使用 dpkg 命令进行安装,命令为:dpkg -i phddns_5.3.0_amd64.deb 。安装过程中,系统会提示安装进度和相关信息,等待安装完成即可。
(二)运行与配置
1.启动花生壳:安装完成后,在终端中运行命令 sudo phddns start 启动花生壳服务。
2.查看状态:可以使用命令 sudo phddns status 查看花生壳的运行状态,确保服务正常运行。如果状态显示异常,可根据提示信息进行排查和解决。
3.登录配置:打开浏览器,访问花生壳 web 链接:http://b.oray.com ,使用注册的账号登录。登录后,在界面中找到 “添加映射” 选项,填写相关信息。例如,若要将内网的 Web 服务器映射到外网,需填写内网服务器的 IP 地址、端口号(如 80 或 443),以及自定义的外网访问域名(如果有)或使用花生壳提供的域名。选择映射类型(如 HTTP 或 HTTPS),保存设置后,花生壳会生成一个外网访问地址,通过该地址即可访问内网的 Web 服务器。
三、使用 frp 配置内网穿透
(一)下载与安装
1.下载 frp:访问 frp 官网(https://gofrp.org/ ),点击 “起步”,找到 “下载” 选项,下载适合 Linux 系统的 frp 版本。由于下载链接通常指向 github,下载速度可能较慢,有条件的可以挂梯子加速下载。
2.解压文件:下载完成后,解压压缩包。例如,使用命令 tar -zxvf frp_0.28.0_linux_amd64.tar.gz 解压文件,解压后会得到 frp 相关的文件和文件夹。
(二)服务端配置
1.新建文件夹:在服务器根目录新建 /frps 文件夹,并设置权限为 777,命令为:mkdir /frps && chmod 777 /frps 。
2.配置文件:进入解压后的 frp 文件夹,找到 frps.ini 文件,这是服务端的配置文件。编辑该文件,设置相关参数。例如:
服务端连接监听端口(从客户端想连上服务器端,就得连接这个端口)
bind_port = 7000
用于防止任何人都能连接这个服务器,来设置的一层密码(需要客户端也对应,如果没有设置这个其他人可以随意连接)
token = your_token
面板端口,账号密码(frp的可视化面板)(如果没有就没有可视化面板)
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
1.运行服务端:将 frps 和 frps.ini 文件移动到 /frps 文件夹中,在终端中先使用 cd 命令进入 /frps 文件夹,然后执行命令 ./frps -c./frps.ini 启动 frp 服务端。如果出现相关提示信息,说明服务端已成功启动。
(三)客户端配置
1.新建文件夹:在本地 Linux 服务器根目录新建 /frpc 文件夹,并设置权限为 777,命令为:mkdir /frpc && chmod 777 /frpc 。
2.配置文件:编辑 frpc.ini 文件,设置内网设备的信息和映射端口。例如:
[common]
server_addr = xxx.xxx.xxx.xxx # frp服务器地址
server_port = 7000 # frp服务器端口
token = your_token # 与服务端设置的token一致
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
1.启动客户端:将 frpc 和 frpc.ini 文件移动到 /frpc 文件夹中,在终端中先使用 cd 命令进入 /frpc 文件夹,然后执行命令 ./frpc -c./frpc.ini 启动 frp 客户端。
(四)设置开机自启(可选)
为了方便管理,可设置 frp 服务端和客户端开机自启。首先下载 systemd ,根据不同的 Linux 发行版,使用相应的命令安装,如:
yum install systemd # CentOS等使用yum的系统
apt install systemd # Ubuntu等使用apt的系统
分别创建 frpc.service 和 frps.service 文件,内容如下:
frps.service
[Unit]
After = network.target syslog.target
Wants = network.target
[Service]
启动frps的命令,需修改为您的frps的安装路径
ExecStart = /frps/frps -c /frps/frps.ini
[Install]
WantedBy = multi-user.target
frpc.service
[Unit]
After = network.target syslog.target
Wants = network.target
[Service]
启动frpc的命令,需修改为您的frpc的安装路径
ExecStart = /frpc/frpc -c /frpc/frpc.ini
[Install]
WantedBy = multi-user.target
将这两个文件分别放置到两个服务器的 /etc/systemd/system 下面,然后使用 systemd 命令设置开机自启:
配置frps服务开机自启动
systemctl enable frps
配置frpc服务开机自启动
systemctl enable frpc
重新加载
systemctl daemon-reload
四、使用 ngrok 配置内网穿透
(一)下载与安装
1.下载 ngrok:在 Linux 终端中,使用 wget 命令下载 ngrok 的 Linux 版本,命令为:wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip 。
2.解压与移动:下载完成后,解压缩文件,并将可执行文件移动到 /usr/local/bin 目录下,命令为:
unzip ngrok-stable-linux-amd64.zip
mv ngrok /usr/local/bin/ngrok
(二)运行与配置
1.身份验证:在使用 ngrok 之前,需要先进行身份验证。在 ngrok 网站上注册并获取您的身份验证令牌,然后在终端中运行命令:ngrok authtoken (YOUR_AUTH_TOKEN) ,将 (YOUR_AUTH_TOKEN) 替换为实际的身份验证令牌。
2.启动 ngrok:运行命令 ngrok tcp (PORT) 进行内网穿透,将 (PORT) 替换为内网设备的端口号。例如,若要穿透内网的 SSH 服务(默认端口 22),则运行命令 ngrok tcp 22 。启动后,ngrok 会生成一个公网地址,通过此地址即可访问内网的 SSH 服务。
五、配置注意事项
1.安全问题:无论是使用花生壳、frp 还是 ngrok,都要注意安全设置。例如,在 frp 中设置强密码(token),防止他人非法连接;在花生壳中,保护好账号密码,避免账号被盗用导致内网服务被恶意访问。同时,对于开放的内网服务端口,要确保其安全性,避免遭受网络攻击。
2.端口冲突:在配置过程中,要注意端口的使用情况,避免出现端口冲突。例如,在 frp 配置中,服务端的监听端口(bind_port)和客户端的远程端口(remote_port)不能与其他已使用的端口冲突。在配置前,可以使用端口扫描工具检查端口的占用情况。
3.网络稳定性:内网穿透的效果与网络稳定性密切相关。如果网络不稳定,可能会导致连接中断、访问速度慢等问题。确保内网和外网的网络连接正常,尽量避免在网络波动较大的环境中使用内网穿透服务。
4.工具版本兼容性:不同版本的内网穿透工具可能在功能和配置上有所差异。在下载和使用工具时,要注意版本的兼容性,尽量选择最新稳定版本,并参考官方文档进行配置。
六、测试与验证
1.访问测试:完成内网穿透配置后,使用外网设备进行访问测试。例如,使用浏览器访问通过花生壳或 ngrok 生成的公网地址,查看是否能够正常访问内网的 Web 服务;使用 SSH 客户端连接通过 frp 或 ngrok 映射的 SSH 端口,检查是否能够成功登录内网服务器。
2.错误排查:如果访问失败,要仔细检查错误提示信息。常见的错误包括连接超时、身份验证失败等。连接超时可能是由于网络问题、端口未正确映射等原因导致;身份验证失败可能是用户名或密码错误,或者是内网穿透工具的配置问题。此时,可以查看工具的日志文件(如 frp 的日志文件在运行目录下,可通过配置文件设置日志路径和级别),获取更多信息帮助排查问题。
拓展阅读:
1.什么是反向代理:反向代理是一种位于客户端和目标服务器之间的服务器,客户端向反向代理发送请求,反向代理根据规则将请求转发到目标服务器,并将目标服务器的响应返回给客户端,内网穿透工具如 frp、ngrok 等就利用了反向代理原理实现内网服务对外网的暴露。
2.如何设置 Linux 系统的防火墙规则以配合内网穿透:在 Linux 系统中,常用的防火墙是 iptables。例如,要允许 frp 服务端的监听端口(如 7000)通过防火墙,可使用命令 iptables -A INPUT -p tcp --dport 7000 -j ACCEPT ,具体规则需根据实际使用的工具和端口进行调整。
3.动态 DNS 在 Linux 内网穿透中的作用是什么:如果公网 IP 是动态分配的,使用动态 DNS 服务可以将动态变化的公网 IP 与一个固定域名绑定。在 Linux 系统中,运行动态 DNS 客户端程序,实时更新 IP 与域名的映射关系,这样即使公网 IP 改变,也能通过固定域名访问内网穿透服务,确保服务的连续性和稳定性。