首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >腾讯云轻量IPv6实现内网穿透

腾讯云轻量IPv6实现内网穿透

原创
作者头像
用户8721346
修改2025-06-12 21:43:22
修改2025-06-12 21:43:22
6010
举报

一、前言

2024年,中央网信办、国家发改委、工信部联合印发《深入推进IPv6规模部署和应用2024年工作应用》,文中提出到2024年末:

  • IPv6活跃用户达到8亿;
  • 物联网IPv6连接达到6.5亿;
  • 固定网IPv6流量占比23%,移动网占比65%。

作者家庭也已经荣幸地接入了支持IPv6的公网带宽。socat 代替frp实现内网穿透能避免内存占用过高和减少性能开销。

二、准备工作

2.1 检测是否成功获取 IPv6

https://test-ipv6.com

获取本机IP

如果本机是windows通过cmd执行ipconfig命令获取本机IPv6地址

代码语言:txt
复制
ipconfig

如果本机是Linux可以通过执行ip a命令获取本机IPv6地址

代码语言:txt
复制
ip a

三、转发端口

转发本机IPv6地址到腾讯云IPv4 (这里我用AI写了个脚本自动添加转发规则)

代码语言:txt
复制
#!/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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、准备工作
    • 2.1 检测是否成功获取 IPv6
  • 三、转发端口
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档