VPN和内网穿透
2026/5/29工具通用工具工具通用工具VPN内网穿透大约 3 分钟
VPN和内网穿透
是什么
VPN 和内网穿透用于解决网络连通问题。
CTF 中常见场景:
- 连接比赛靶场 VPN
- 访问实验室内网平台
- 让远程 bot 回连本机服务
- 搭建临时 HTTP 服务器接收请求
这类工具和真实网络环境有关,公开文档只保留通用方法,不写具体内部地址和账号。
安装与配置
常见 VPN 客户端:
OpenVPN
WireGuard
系统自带 VPNOpenVPN 示例:
sudo apt install openvpn
sudo openvpn --config game.ovpnWireGuard 示例:
sudo apt install wireguard
sudo wg-quick up wg0更多工具
OpenVPN 详细配置
# 连接 VPN
sudo openvpn --config game.ovpn
# 后台运行
sudo openvpn --config game.ovpn --daemon
# 查看日志
sudo journalctl -u openvpn
# 断开连接
sudo killall openvpnWireGuard 详细配置
# /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <client-private-key>
Address = 10.0.0.2/24
DNS = 8.8.8.8
[Peer]
PublicKey = <server-public-key>
Endpoint = vpn-server:51820
AllowedIPs = 10.0.0.0/24# 启动
sudo wg-quick up wg0
# 关闭
sudo wg-quick down wg0
# 查看状态
sudo wg showSSH 隧道
# 本地端口转发
ssh -L 8080:target:80 user@ssh-server
# 远程端口转发
ssh -R 8080:localhost:80 user@ssh-server
# 动态端口转发(SOCKS 代理)
ssh -D 1080 user@ssh-server
# 后台运行
ssh -f -N -L 8080:target:80 user@ssh-serverfrp(内网穿透)
# 服务端配置 (frps.toml)
bindPort = 7000
# 客户端配置 (frpc.toml)
serverAddr = "your-server-ip"
serverPort = 7000
[[proxies]]
name = "web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 8080
remotePort = 8080# 启动服务端
./frps -c frps.toml
# 启动客户端
./frpc -c frpc.tomlngrok
# 安装
# https://ngrok.com/download
# 启动 HTTP 隧道
ngrok http 8080
# 启动 TCP 隧道
ngrok tcp 8080socat 端口转发
# 端口转发
socat TCP-LISTEN:8080,fork TCP:target:80
# 绑定 shell
socat TCP-LISTEN:4444,fork EXEC:/bin/bash基本用法
检查 IP
ip addr
ip route测试连通
ping target
curl http://target/
nc -vz target 80临时 HTTP 服务
python3 -m http.server 8000CTF常用技巧
记录网络状态
连接 VPN 前后分别记录:
ip addr
ip route避免不知道请求从哪条网卡出去。
bot 回连题
XSS、SSRF、XXE 外带题常需要公网可访问地址。可以使用比赛提供的平台、云服务器或合规内网穿透服务。
不公开内部配置
公开 WP 时不要写:
内部 VPN 配置
真实服务器地址
账号密码
群内专用链接接收外带数据
# 使用 Python 简单 HTTP 服务器
python3 -m http.server 8080
# 使用 netcat 监听
nc -lvnp 8080
# 使用 PHP 内置服务器
php -S 0.0.0.0:8080DNS 外带
# 使用 dnschef
dnschef --fakeip=your-ip
# 使用 Python DNS 服务器
pip install dnslib
python3 -c "
from dnslib.server import DNSServer
from dnslib.dns import RR, A
# 自定义 DNS 处理
"多层网络
场景: 需要访问多层内网
方案:
1. 第一层 VPN 连接
2. 在 VPN 网络内建立 SSH 隧道
3. 通过隧道访问第二层网络
4. 使用 proxychains 配合工具proxychains 配置
# 安装
sudo apt install proxychains4
# 配置 /etc/proxychains4.conf
socks5 127.0.0.1 1080
# 使用
proxychains4 nmap -sT target
proxychains4 curl http://internal-target/常见问题
VPN 连上但访问不了靶机
检查路由、DNS、防火墙、目标端口是否开放。
本机服务远程访问不到
检查监听地址是否是 0.0.0.0,防火墙是否放行端口。
内网穿透不稳定
比赛中优先用稳定云服务器或平台提供的回连地址。
多个 VPN 冲突
1. 检查路由表冲突
2. 使用 --route-nopull 避免修改路由
3. 手动添加路由
4. 使用不同网络命名空间DNS 解析问题
# 手动指定 DNS
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
# 测试 DNS
nslookup target
dig target防火墙问题
# 查看防火墙规则
sudo iptables -L
# 临时关闭防火墙(测试用)
sudo iptables -F
# 开放端口
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT关联
- SSRF基础
- XXE基础
- XSS基础
- 代理和抓包
- Nmap
- curl