楼主: DanielDerrenk
37 0

通过Squid代理在Tailscale中共享L2TP访问权限 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-10-11
最后登录
2018-10-11

楼主
DanielDerrenk 发表于 2025-11-29 07:01:50 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

利用Squid代理实现Tailscale网络中的L2TP访问共享

一、应用场景说明

在企业或多地点家庭网络环境中,常面临如下情况: - 公司总部拥有一个私有局域网,内含文件服务器、内部管理系统等资源 - 远程员工或家庭成员的设备需安全接入该网络 - 多个地理位置分散的终端希望访问总部服务 关键限制在于: 仅有一台特定主机(称为“网关设备”)具备通过L2TP协议直连总部的能力。为使其他设备也能访问目标资源,必须借助中间转发机制。

二、系统架构与组件功能解析

[其他设备] ←→ [Tailscale虚拟局域网] ←→ [网关设备] ←→ [L2TP ] ←→ [总部网络]

核心模块作用说明:

Tailscale —— 构建虚拟专用网络(VPC) 功能:将分布于各地的设备无缝组建成一个加密的虚拟局域网 优势:自动发现节点、端到端加密、零配置连接 L2TP隧道 —— 建立通往总部的安全链路 用途:由网关设备发起,创建一条基于IPsec保护的稳定通道 特性:权限受限,仅允许授权设备建立连接 Squid代理服务 —— 实现请求中转与流量代理 职责:接收来自Tailscale网络内其他设备的HTTP/HTTPS请求,并通过L2TP通道代为转发至目标网络 类比理解:如同快递集散中心,将普通运输路线的包裹转入专用高速通道进行投递

三、运行机制详解

1、数据流动路径分析

设备A (Tailscale IP: 100.10.10.200)
         ↓ HTTP请求: 访问内部系统
    Squid代理 (Tailscale IP: 100.10.10.100, 监听3128端口)
         ↓ 通过ppp0网卡转发
    L2TP 隧道 (ppp0: 10.1.1.100)
         ↓
    总部内部网络 (如: 192.168.1.0/24)
当远程用户尝试访问总部资源时,流程如下: 1. 请求从客户端发出,经Tailscale路由到达代理服务器 2. Squid接收请求并判断是否符合转发规则 3. 若合法,则通过已建立的L2TP接口(ppp0)发送至总部网络 4. 总部返回响应,数据沿原路径回传至客户端

2、关键技术实现要点

定制化路由策略 为确保双向通信正常,需设置独立路由表:
ppp0-table
具体策略包括: - 所有源自ppp0网卡的数据流,其回程路径也强制指定为此接口 - 防止因默认网关导致的响应丢包或路径错乱 网络地址转换(NAT)控制 通过Squid的出站IP绑定机制,统一对外标识:
tcp_outgoing_address
效果: - 所有代理请求在总部侧均显示为来自合法L2TP分配的IP地址 - 提升兼容性与访问成功率 安全隔离设计 保障整体系统的安全性: - Tailscale网络与总部内部网络逻辑隔离 - 仅开放Web类流量(HTTP/HTTPS)的代理转发 - 禁止非必要协议穿透,降低暴露面

四、部署操作步骤指南

1、L2TP连接环境准备

1.1 安装所需软件包
# 更新源列表以获取最新版本信息
apt-get update

# 安装三大基础组件:
# strongswan:提供IPsec加密支持
# xl2tpd:实现L2TP协议栈
# net-tools:包含常用网络诊断工具
apt-get install strongswan xl2tpd net-tools -y
1.2 设置连接参数
_SERVER_IP=''       # L2TP服务器公网IP
_IPSEC_PSK=''       # IPSec预共享密钥
_USER=''            # 认证用户名
_PASSWORD=''        # 登录密码
注意:生产环境下应避免明文存储密码,建议使用密钥管理工具或配置文件权限保护。
1.3 配置文件创建
IPsec主配置
/etc/ipsec.conf
cat > /etc/ipsec.conf <<EOF
conn myvpn
auto=add
keyexchange=ikev1
authby=secret
type=transport
left=%defaultroute
leftprotoport=17/1701
rightprotoport=17/1701
right=$_SERVER_IP
ike=aes128-sha1-modp2048
esp=aes128-sha1
EOF
cat > /etc/ipsec.secrets <<EOF
: PSK "$_IPSEC_PSK"
EOF
chmod 600 /etc/ipsec.secrets
L2TP相关配置
/etc/xl2tpd/xl2tpd.conf
cat > /etc/xl2tpd/xl2tpd.conf <<EOF
[lac myvpn]
lns = $_SERVER_IP
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes
EOF
cat > /etc/ppp/options.l2tpd.client <<EOF
ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-chap
noccp
noauth
mtu 1280
mru 1280
noipdefault
defaultroute
usepeerdns
connect-delay 5000
name "$_USER"
password "$_PASSWORD"
EOF
chmod 600 /etc/ppp/options.l2tpd.client
mkdir -p /var/run/xl2tpd
touch /var/run/xl2tpd/l2tp-control
1.4 启动连接服务
# 重启相关服务以加载新配置
systemctl restart strongswan
systemctl restart xl2tpd

# 触发L2TP连接建立
echo "c myvpn" > /var/run/xl2tpd/l2tp-control
1.5 断开L2TP连接(非使用时段)
# 关闭当前会话
echo "d myvpn" > /var/run/xl2tpd/l2tp-control

2、Squid代理服务部署

2.1 安装Squid服务程序
apt-get install squid -y
2.2 调整网络访问策略
确保防火墙允许Tailscale子网对代理端口(通常为3128)的访问。
2.3 编辑Squid主配置文件
根据实际需求设定ACL规则、监听地址及允许访问的客户端范围。
2.4 配置高级路由规则
结合Linux策略路由机制,保证代理流量正确走ppp0出口,防止路由冲突。

3、测试与验证环节

3.1 基础连通性检测
- 检查ppp0接口是否成功获取IP - 使用ping或traceroute确认与总部网络可达性
3.2 内部资源访问验证
- 在Tailscale网络内的客户端配置HTTP代理指向Squid服务器 - 尝试访问总部Web系统或API接口 - 查看Squid日志确认请求被正确转发并返回结果
# 重启IPsec与L2TP服务
ipsec restart
service xl2tpd restart

# 建立IPsec安全关联
ipsec up myvpn

# 发起L2TP连接(c = connect)
echo "c myvpn" > /var/run/xl2tpd/l2tp-control

# 验证连接状态
ifconfig ppp0
# 正常应显示如下信息:
# ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1280
#         inet 10.1.1.100  netmask 255.255.255.255  destination 10.1.1.1



1.5 关闭L2TP连接(非使用时段)
echo "d myvpn" > /var/run/xl2tpd/l2tp-control
ipsec down myvpn

2. Squid代理服务器配置

2.1 安装Squid服务
sudo apt update
sudo apt install squid -y
sudo systemctl enable squid

2.2 网络参数设置
PPP_INTERFACE="ppp0"      # L2TP创建的虚拟接口
PPP_GATEWAY="10.1.1.1"    # 内部网络网关地址
ROUTE_TABLE="ppp0-table"  # 自定义路由表标识
PPP_IP="10.1.1.100"       # 当前设备在隧道中的IP

2.3 Squid服务配置
cat > /etc/squid/squid.conf << EOF
# 基础服务配置
http_port 3128                 # 代理监听端口为3128
always_direct allow all        # 请求直接转发,不走上级代理

# DNS解析设置
dns_nameservers 8.8.8.8 1.1.1.1  # 使用公共DNS服务器
dns_v4_first on                # 优先采用IPv4进行域名解析

# 出站流量控制
tcp_outgoing_address $PPP_IP  # 所有出站连接绑定到指定IP

# 访问控制列表定义
acl local_net src all          # 允许所有来源IP访问
acl SSL_ports port 443         # HTTPS使用的端口
acl Safe_ports port 80         # HTTP安全端口
acl Safe_ports port 443        # HTTPS也属于安全端口
acl CONNECT method CONNECT     # 支持CONNECT方法建立SSL隧道

# 隐私与安全增强
via off                        # 不在响应头中添加Via信息
forwarded_for delete           # 清除X-Forwarded-For头部数据
ssl_bump none                  # 不对SSL流量进行拦截或解密
cache deny all                 # 禁用内容缓存功能

# 访问权限策略
http_access allow local_net CONNECT SSL_ports  # 允许建立HTTPS隧道
http_access allow local_net Safe_ports         # 允许访问HTTP/HTTPS服务
http_access deny !Safe_ports                   # 禁止访问非安全端口
http_access deny all                           # 默认拒绝其他所有请求
EOF

# 重启Squid以加载新配置
sudo systemctl restart squid

2.4 高级路由策略配置
# 添加自定义路由表条目
sed -i '/'$ROUTE_TABLE'/d' /etc/iproute2/rt_tables  # 清理旧记录
echo "100 $ROUTE_TABLE" >> /etc/iproute2/rt_tables  # 写入新表名

# 初始化路由表内容
ip route flush table $ROUTE_TABLE 2>/dev/null   # 清除已有规则
ip route add default via $PPP_GATEWAY dev $PPP_INTERFACE table $ROUTE_TABLE  # 设置默认路由路径

# 创建策略路由规则:来自特定IP的流量启用独立路由表

ip rule add from $PPP_IP lookup $ROUTE_TABLE

该路由配置的主要功能是:

  • 确保响应数据包能够通过与请求相匹配的路径返回,从而维持通信的一致性。
  • 防止出现“非对称路由”现象,即请求通过代理链路发出,而响应却经由默认路由或普通网络接口返回的情况。

3. 测试与验证步骤

3.1 基础连通性检测

使用以下命令测试代理服务器是否正常运行:

curl -x http://100.10.10.100:3128 https://ipinfo.io/json

若配置正确,返回结果应类似如下内容:

{
  "ip": "XXXX",        # 此处显示的 IP 应为代理出口 IP
  "city": "Hong Kong",
  "region": "Hong Kong",
  ...
}

3.2 内部资源访问测试

为便于后续测试,可设置环境变量以使系统自动应用代理:

export http_proxy="http://100.10.10.100:3128"
export https_proxy="http://100.10.10.100:3128"

完成设置后,后续发起的 HTTP/HTTPS 请求将自动经过指定代理节点,可用于进一步验证内网可达性及代理策略的有效性。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:scale tails tail qui ale

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-31 03:04