chore: 同步知识库文档更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-27 19:10:31 +08:00
parent fda12a614e
commit cb683a9e8c
6 changed files with 173 additions and 32 deletions

View File

@@ -0,0 +1,22 @@
101.43.95.130 username:renjianbo port 22 密码123456
● 经历了以下步骤:
1. 直接用 ssh 命令 — 失败,因为缺少 sshpass 无法在命令行传入密码
2. 检测到 Python 3.12 — WindowsApps 里的 python3 不可用,用了实际安装的 C:\Users\Administrator\AppData\Local\Programs\Python\Python312\python
3. 安装 paramiko — pip install paramikoPython 的 SSH 库 4. 用 paramiko 连接 — 脚本如下:
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动接受主机密钥
ssh.connect('101.43.95.130', port=22, username='renjianbo', password='123456', timeout=10)
# 连接成功后执行命令
stdin, stdout, stderr = ssh.exec_command('hostname && uname -a && uptime')
print(stdout.read().decode())
ssh.close()
关键点paramiko 支持直接在代码里传入密码,绕过了 OpenSSH 客户端不支持命令行传密码的限制。

View File

@@ -2,3 +2,6 @@
知库项目D:\zhiku\mkdocs\docs 上传到git
知库项目D:\workspace\mkdocs\docs上传到git

View File

@@ -0,0 +1,8 @@
将问题修复的记录
将记录输出到D:\workspace\mkdocs\docs\Obsidian笔记体系\Projects\故障排除记录

View File

@@ -0,0 +1,83 @@
---
tags: [故障排除, 服务器, iptables, 网络]
date: 2026-06-27
server: 101.43.95.130
---
# 云服务器 3001 端口无法访问
## 问题
浏览器无法访问 `http://101.43.95.130:3001/`Gitea腾讯云安全组已放行 3001 端口。
## 排查过程
### 1. 本地端口监听检查
```bash
netstat -tlnp | grep 3001
```
端口 3001 正常监听docker-proxy但 PID 需要 root 才能看到。
### 2. 服务可达性
```bash
curl http://127.0.0.1:3001/ # 返回 200 ✓
curl http://10.0.4.13:3001/ # 返回 200 ✓
```
服务器本地访问正常Gitea 运行在 Docker 容器 `gitea` 中。
### 3. 防火墙检查
```bash
firewall-cmd --list-ports # 3001/tcp 在列表中 ✓
iptables -L INPUT -n # IN_public_allow 允许 3001 ✓
iptables -t nat -L DOCKER -n # DNAT 规则正确 ✓
```
firewalld 和 iptables filter/NAT 规则都正确。
### 4. tcpdump 抓包
```bash
tcpdump -i any -n port 3001
```
外网 SYN 包到达服务器 `10.0.4.13:3001`,但服务器**没有回复 SYN-ACK**。说明包在到达服务前被静默丢弃。
### 5. 关键发现
`iptables -t nat -L PREROUTING -n -v` 显示 DNAT 规则只有 1 个包命中52 bytes`iptables -L FORWARD -n -v` 中没有包到达 172.19.0.3:3000 的 ACCEPT 规则。说明包在 PREROUTING 和 FORWARD 之间丢失。
## 根因
检查 **raw 表** `PREROUTING_direct` 链,发现端口 3001 有 IP 白名单:
| 规则 | 来源 | 动作 |
|------|------|------|
| 1 | 123.139.40.30 | ACCEPT |
| 2 | 127.0.0.1 | ACCEPT |
| 3 | 172.0.0.0/8 (Docker) | ACCEPT |
| 4 | 所有其他 IP | DROP |
当前外网 IP `123.139.39.4` 不在白名单内,所有对 3001 端口的外部请求在 raw 表就被静默丢弃,根本走不到后续的 NAT/DNAT 环节。
> **raw 表是 iptables 处理流程的第一环**DROP 的包不会经过 conntrack、nat、filter 等后续处理。
## 修复
将当前外网 IP `123.139.39.4` 加入 raw 表 `PREROUTING_direct` 链的白名单。
## 注意事项
- raw 表规则很可能是主机安全软件(云镜/主机安全)自动配置的
- 服务器重启后可能被重置
- 如需永久生效,应在安全软件控制台添加 IP 白名单
## 经验教训
1. 排查外网无法访问问题时,如果 firewalld/iptables filter/NAT 都正确,一定要检查 **raw 表**
2. 对比工作端口3006和故障端口3001的差异可以缩小排查范围
3. `tcpdump` 看到 SYN 但无 SYN-ACK → 包被静默丢弃,检查 iptables 最前端