134 lines
3.3 KiB
Markdown
134 lines
3.3 KiB
Markdown
|
|
# 连接测试指南
|
|||
|
|
|
|||
|
|
## 当前状态
|
|||
|
|
- ✅ 服务在服务器上正常运行
|
|||
|
|
- ✅ 本地访问成功 (localhost:12240)
|
|||
|
|
- ❌ 外部访问失败 (119.45.30.82:12240)
|
|||
|
|
|
|||
|
|
## 问题原因
|
|||
|
|
外部无法访问通常是以下原因之一:
|
|||
|
|
1. **服务器防火墙未开放端口**(最常见)
|
|||
|
|
2. **云服务器安全组未配置**
|
|||
|
|
3. **网络路由问题**
|
|||
|
|
|
|||
|
|
## 解决步骤
|
|||
|
|
|
|||
|
|
### 步骤1: 配置服务器防火墙
|
|||
|
|
|
|||
|
|
在服务器上执行:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 方法1: 使用 firewalld (CentOS 7+/RHEL 7+)
|
|||
|
|
sudo firewall-cmd --add-port=12240/tcp --permanent
|
|||
|
|
sudo firewall-cmd --reload
|
|||
|
|
sudo firewall-cmd --list-ports # 验证
|
|||
|
|
|
|||
|
|
# 方法2: 使用 iptables
|
|||
|
|
sudo iptables -A INPUT -p tcp --dport 12240 -j ACCEPT
|
|||
|
|
sudo service iptables save
|
|||
|
|
# 或
|
|||
|
|
sudo iptables-save > /etc/sysconfig/iptables
|
|||
|
|
|
|||
|
|
# 方法3: 使用提供的脚本
|
|||
|
|
chmod +x open_firewall.sh
|
|||
|
|
sudo ./open_firewall.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 步骤2: 配置云服务器安全组
|
|||
|
|
|
|||
|
|
#### 阿里云
|
|||
|
|
1. 登录阿里云控制台
|
|||
|
|
2. 进入 **ECS** → **网络与安全** → **安全组**
|
|||
|
|
3. 选择对应的安全组
|
|||
|
|
4. 点击 **配置规则** → **添加安全组规则**
|
|||
|
|
5. 配置:
|
|||
|
|
- 规则方向:入方向
|
|||
|
|
- 授权策略:允许
|
|||
|
|
- 协议类型:TCP
|
|||
|
|
- 端口范围:12240/12240
|
|||
|
|
- 授权对象:0.0.0.0/0(或指定IP)
|
|||
|
|
|
|||
|
|
#### 腾讯云
|
|||
|
|
1. 登录腾讯云控制台
|
|||
|
|
2. 进入 **云服务器** → **安全组**
|
|||
|
|
3. 选择对应的安全组 → **修改规则**
|
|||
|
|
4. 添加入站规则:
|
|||
|
|
- 类型:自定义
|
|||
|
|
- 来源:0.0.0.0/0
|
|||
|
|
- 协议端口:TCP:12240
|
|||
|
|
- 策略:允许
|
|||
|
|
|
|||
|
|
#### 其他云服务商
|
|||
|
|
类似操作,在安全组/防火墙规则中添加 TCP 12240 端口的入站规则。
|
|||
|
|
|
|||
|
|
### 步骤3: 验证配置
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1. 检查端口监听(应该显示 0.0.0.0:12240)
|
|||
|
|
netstat -tlnp | grep 12240
|
|||
|
|
# 或
|
|||
|
|
ss -tlnp | grep 12240
|
|||
|
|
|
|||
|
|
# 2. 检查防火墙规则
|
|||
|
|
firewall-cmd --list-ports # firewalld
|
|||
|
|
# 或
|
|||
|
|
iptables -L INPUT -n | grep 12240 # iptables
|
|||
|
|
|
|||
|
|
# 3. 从服务器测试外部IP
|
|||
|
|
curl http://119.45.30.82:12240/api/cattle-data
|
|||
|
|
|
|||
|
|
# 4. 从外部测试(在本地Windows PowerShell)
|
|||
|
|
curl http://119.45.30.82:12240/api/cattle-data
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 临时测试方案(SSH隧道)
|
|||
|
|
|
|||
|
|
如果暂时无法配置防火墙,可以使用 SSH 隧道进行测试:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 在本地Windows PowerShell中执行
|
|||
|
|
ssh -L 12240:localhost:12240 root@119.45.30.82
|
|||
|
|
|
|||
|
|
# 然后在另一个终端测试
|
|||
|
|
curl http://localhost:12240/api/cattle-data
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 诊断工具
|
|||
|
|
|
|||
|
|
使用提供的诊断脚本:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
chmod +x check_connection.sh
|
|||
|
|
./check_connection.sh
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 常见问题
|
|||
|
|
|
|||
|
|
### Q: 防火墙已配置但仍无法访问?
|
|||
|
|
A: 检查云服务器安全组,这是最常见的遗漏。
|
|||
|
|
|
|||
|
|
### Q: 如何确认端口是否开放?
|
|||
|
|
A: 使用在线端口检测工具,或从其他服务器测试。
|
|||
|
|
|
|||
|
|
### Q: 服务只监听 localhost?
|
|||
|
|
A: Spring Boot 默认监听 0.0.0.0,如需明确指定:
|
|||
|
|
```yaml
|
|||
|
|
server:
|
|||
|
|
address: 0.0.0.0
|
|||
|
|
port: 12240
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 测试命令汇总
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 服务器端
|
|||
|
|
netstat -tlnp | grep 12240 # 检查监听
|
|||
|
|
curl http://localhost:12240/api/cattle-data # 本地测试
|
|||
|
|
firewall-cmd --list-ports # 查看防火墙端口
|
|||
|
|
|
|||
|
|
# 客户端(Windows PowerShell)
|
|||
|
|
curl http://119.45.30.82:12240/api/cattle-data
|
|||
|
|
Invoke-WebRequest -Uri http://119.45.30.82:12240/api/cattle-data
|
|||
|
|
```
|
|||
|
|
|