You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

请求解决L2TP服务器后华为B525路由器LAN子网访问问题

解决VPN侧无法访问华为B525内网网段的问题

折腾这么久没搞定,咱们一步步来拆解问题。核心矛盾是:你的华为B525内网(192.168.8.0/24)能访问VPN设备,但反过来VPS和其他VPN客户端碰不到内网设备。这大概率是路由缺失IP转发未开启或者防火墙规则拦截导致的,咱们逐个排查:

1. 给VPS和VPN客户端补上路由

VPN侧根本不知道192.168.8.0/24这个网段该往哪发,所以首先得在VPS上添加静态路由,把这个网段的流量导向华为路由器的VPN IP(192.168.42.10):

# 临时生效,重启VPS后会消失
ip route add 192.168.8.0/24 via 192.168.42.10 dev ppp0

注意:ppp0是xl2tpd对应的VPN接口,你可以用ip addr命令确认实际接口名。

如果要永久生效,不同系统配置方式不同:

  • Debian/Ubuntu:写入/etc/netplan/00-installer-config.yaml(或对应netplan配置文件),添加路由条目
  • CentOS/RHEL:创建/etc/sysconfig/network-scripts/route-ppp0文件,写入192.168.8.0/24 via 192.168.42.10 dev ppp0

另外,其他VPN客户端也需要这条路由,手动加太麻烦,直接在xl2tpd配置里推送:
编辑/etc/xl2tpd/xl2tpd.conf的LNS段,添加推送路由的配置:

[global]
ipsec saref = yes

[lns default]
ip range = 192.168.42.10-192.168.42.20
local ip = 192.168.42.1
push "route 192.168.8.0 255.255.255.0"  # 给客户端自动推送内网路由
require chap = yes
refuse pap = yes
require authentication = yes
name = lns
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

重启xl2tpd服务后,新连接的客户端会自动获取这条路由。

2. 开启华为B525的IP转发

华为路由器需要负责转发内网和VPN网段之间的流量,默认可能没开。先登录路由器管理界面,找「高级设置」→「网络转发」或者类似选项,开启「IP转发」功能。

如果界面找不到(有些运营商定制版可能藏得深),若路由器支持SSH登录,登录后执行:

# 临时开启
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

3. 调整VPS的iptables规则

3.1 允许VPN与内网的转发流量

检查VPS的filter表FORWARD链,确保双向流量都能通过:

# 允许VPN网段访问内网
iptables -A FORWARD -s 192.168.42.0/24 -d 192.168.8.0/24 -j ACCEPT
# 允许内网回包到VPN网段
iptables -A FORWARD -s 192.168.8.0/24 -d 192.168.42.0/24 -j ACCEPT

如果你的FORWARD链默认策略是DROP,这两条规则必须加;如果是ACCEPT,可以跳过,但建议明确配置更稳妥。

3.2 解决内网回包的SNAT问题

内网设备默认只知道自己的网关(华为B525的192.168.8.1),不知道VPN网段的存在,所以当VPN设备访问内网设备时,内网设备的回包会发往网关,但路由器如果不做地址转换,VPS可能收不到回包。这时候需要在华为路由器上配置SNAT:

# 把内网发往VPN网段的流量源地址改成路由器的VPN IP
iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -d 192.168.42.0/24 -j SNAT --to-source 192.168.42.10

如果华为路由器不支持自定义iptables,也可以尝试让路由器通过DHCP给内网设备推送VPN网段的路由,但SNAT是最直接的替代方案。

另外,还要检查VPS上的NAT规则,别把192.168.8.0/24的流量误做MASQUERADE了——正常的互联网流量伪装规则(比如iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE)没问题,但别包含VPN或内网网段。

4. 验证配置

做完上面的步骤,咱们来测试:

  1. 在VPS上ping华为路由器的内网IP:ping 192.168.8.1,看是否能通
  2. 在其他VPN客户端上ping同一个IP,测试连通性
  3. 尝试访问内网设备的端口,比如telnet 192.168.8.xxx 80(替换成你内网设备的IP和开放端口)

如果还是不行,再检查两个点:

  • 华为路由器的防火墙是否拦截了来自192.168.42.0/24的入站流量,看看有没有禁止VPN网段访问内网的规则
  • 检查xl2tpd的ppp配置,编辑/etc/ppp/options.xl2tpd,确保有ip-forward开启转发

内容的提问来源于stack exchange,提问作者Sokołow

火山引擎 最新活动