frp内网穿透Linux
时间: 2025-05-18 12:04:01 浏览: 20
### frp内网穿透配置方法
#### 准备工作
为了实现内网穿透,需要准备以下资源:
- 一个域名(需解析至公网服务器)。
- 一台具有公网IP地址的Linux服务器,并确保所需端口已开放安全组或防火墙设置[^1]。
- 至少一台位于内网环境中的设备(如Windows电脑或其他支持frp客户端运行的操作系统)。
---
#### 安装FRP服务端
在公网Linux服务器上完成如下操作:
1. **下载并解压FRP安装包**
下载最新版本的FRP软件包到Linux服务器上。以下是具体命令:
```bash
wget https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz
tar -zxvf frp_0.60.0_linux_amd64.tar.gz
cd frp_0.60.0_linux_amd64/
```
2. **编辑服务端配置文件**
修改`frps.ini`文件以适配实际需求。例如:
```ini
[common]
bind_port = 7000 # 设置服务端监听的端口号
vhost_http_port = 80 # 如果需要转发HTTP请求,则指定此端口
dashboard_port = 7500 # 可选:用于监控FRP状态的仪表盘端口
token = your_token # 自定义密钥,增强安全性
log_file = ./frps.log # 日志记录路径
log_level = info # 日志级别
max_pool_count = 5 # 连接池大小
authentication_timeout = 900 # 身份验证超时时间
```
3. **启动FRP服务端**
执行以下命令来启动FRP服务端程序:
```bash
nohup ./frps -c ./frps.ini &
```
---
#### 配置FRP客户端
在内网环境中执行以下步骤:
1. **下载并解压FRP客户端**
同样从GitHub仓库获取对应平台的FRP客户端安装包。对于Windows操作系统,可以使用以下链接手动下载:
```
https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_windows_amd64.zip
```
2. **编辑客户端配置文件**
创建或修改`frpc.ini`文件,填写必要的参数。例如:
```ini
[common]
server_addr = xxx.xxx.xxx.xxx # 替换为公网服务器的实际IP地址
server_port = 7000 # 对应于服务端绑定的端口号
[ssh]
type = tcp # 协议类型
local_ip = 127.0.0.1 # 内网目标机器上的本地IP地址
local_port = 22 # 内网SSH服务默认端口
remote_port = 6000 # 映射到外网的服务端暴露端口
[web]
type = http # HTTP协议映射
custom_domains = example.com # 域名指向的目标网站
local_port = 80 # 内网Web服务对应的端口
```
3. **启动FRP客户端**
在内网主机上通过终端运行以下指令开启连接:
```bash
nohup ./frpc.exe -c ./frpc.ini &
```
---
#### 测试与验证
当上述两部分均成功部署后,可以通过以下方式测试效果:
- 访问远程SSH会话:尝试利用外部网络登录到内网计算机,命令格式如下所示:
```bash
ssh [email protected] -p 6000
```
- 检查网页可用性:打开浏览器输入完整的URL地址 `http://example.com` ,确认能否正常加载页面内容。
如果一切顺利,说明已经完成了基于FRP工具搭建的内网穿透方案实施过程。
```python
# 示例Python脚本片段展示自动化检测逻辑
import paramiko
def test_ssh_connection(host, port=6000):
try:
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(hostname=host, port=port, username="your_username", password="password")
stdin, stdout, stderr = client.exec_command('echo Hello')
output = stdout.read().decode('utf-8').strip()
return True if 'Hello' in output else False
except Exception as e:
print(f"Error occurred: {e}")
return False
if __name__ == "__main__":
result = test_ssh_connection("xxx.xxx.xxx.xxx")
print("Connection successful!" if result else "Failed to connect.")
```
阅读全文
相关推荐















