2024年,中央网信办、国家发改委、工信部联合印发《深入推进IPv6规模部署和应用2024年工作应用》,文中提出到2024年末:
作者家庭也已经荣幸地接入了支持IPv6的公网带宽。socat
代替frp实现内网穿透能避免内存占用过高和减少性能开销。
https://test-ipv6.com
获取本机IP
如果本机是windows通过cmd执行ipconfig命令获取本机IPv6地址
ipconfig
如果本机是Linux可以通过执行ip a命令获取本机IPv6地址
ip a
转发本机IPv6地址到腾讯云IPv4 (这里我用AI写了个脚本自动添加转发规则)
#!/bin/bash
# 配置目录和 systemd 服务名
CONFIG_DIR="/etc/socat_pf"
CONFIG_FILE="$CONFIG_DIR/forward.list"
UNIT_DIR="/etc/systemd/system"
SERVICE_NAME="socat_pf"
SERVICE_FILE="$UNIT_DIR/$SERVICE_NAME.service"
# 确保配置目录存在
mkdir -p "$CONFIG_DIR"
touch "$CONFIG_FILE"
# 检测包管理器
function detect_pkg_mgr() {
if command -v apt &>/dev/null; then
echo "apt"
elif command -v yum &>/dev/null; then
echo "yum"
else
echo "unsupported"
fi
}
function install_socat() {
PKG_MGR=$(detect_pkg_mgr)
if [ "$PKG_MGR" == "apt" ]; then
apt update && apt install -y socat
elif [ "$PKG_MGR" == "yum" ]; then
yum install -y socat
else
echo "Unsupported package manager. Please install socat manually."
exit 1
fi
}
function build_service() {
echo "[Unit]" > "$SERVICE_FILE"
echo "Description=Socat Port Forwarding" >> "$SERVICE_FILE"
echo "After=network.target" >> "$SERVICE_FILE"
echo "[Service]" >> "$SERVICE_FILE"
echo "Type=oneshot" >> "$SERVICE_FILE"
echo "RemainAfterExit=true" >> "$SERVICE_FILE"
echo "ExecStart=/bin/bash $CONFIG_FILE" >> "$SERVICE_FILE"
echo "ExecStop=/bin/pkill socat" >> "$SERVICE_FILE"
echo "[Install]" >> "$SERVICE_FILE"
echo "WantedBy=multi-user.target" >> "$SERVICE_FILE"
chmod +x "$CONFIG_FILE"
systemctl daemon-reexec
systemctl daemon-reload
systemctl restart "$SERVICE_NAME"
}
function list_rules() {
echo "本机监听IP 本机监听端口或监听端口范围 远程IP 远程端口"
grep -v '^#' "$CONFIG_FILE" | sed -E 's/.*socat (TCP[46])-LISTEN:([0-9]+),.* (TCP[46]):\[?(.*)\]?:([0-9]+).*/\1 \2 \4 \5/'
}
function check_status() {
systemctl status "$SERVICE_NAME"
}
function add_forward() {
read -p "请输入本机监听端口或端口范围(监听本机IPv4+IPv6): " lport
read -p "请输入远程IP(支持IPv4和IPv6): " rhost
read -p "请输入远程端口或端口范围: " rport
if grep -q ":$lport\b" "$CONFIG_FILE"; then
echo "端口 $lport 已存在转发配置,跳过。"
return
fi
if [[ "$rhost" =~ ":" ]]; then
# IPv6
line="nohup socat TCP6-LISTEN:$lport,fork TCP6:[$rhost]:$rport &"
else
# IPv4
line="nohup socat TCP4-LISTEN:$lport,fork TCP4:$rhost:$rport &"
fi
echo "$line" >> "$CONFIG_FILE"
build_service
echo "已添加端口转发 $lport -> $rhost:$rport"
}
function delete_forward() {
read -p "请输入本机监听端口或端口范围: " lport
BEFORE=$(grep -c ":$lport\b" "$CONFIG_FILE")
grep -v ":$lport\b" "$CONFIG_FILE" > "$CONFIG_FILE.tmp"
mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"
AFTER=$(grep -c ":$lport\b" "$CONFIG_FILE")
if [ "$BEFORE" -eq 0 ]; then
echo "未找到端口 $lport 的转发规则,未删除任何内容。"
else
build_service
echo "已删除端口 $lport 的转发规则"
fi
}
while true; do
echo "\n========= 端口转发管理菜单 ========="
echo "1. 安装 socat"
echo "2. 增加端口转发"
echo "3. 删除端口转发"
echo "4. 列出端口转发规则"
echo "5. 查询端口转发状态"
echo "0. 退出"
echo "===================================="
read -p "请输入选项: " choice
case "$choice" in
1) install_socat ;;
2) add_forward ;;
3) delete_forward ;;
4) list_rules ;;
5) check_status ;;
0) exit 0 ;;
*) echo "无效选项" ;;
esac
done
将代码保存为 pf.sh
chmod 777 pf.sh 赋予权限后 ./pf.sh
增加端口映射即可
我也会持续更新本脚本
安全建议
内网穿透RDP(远程桌面)和SSH服务前必须确保使用非弱口令,否则会导致内网设备被爆破。
数据无价请谨慎映射内网服务
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。