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

Strongswan VPN本地机器流量转发及分流配置咨询

Strongswan VPN本地机器流量转发及分流配置咨询

看起来你已经摸到门道了——开了IP转发,连好了Strongswan的IKEv2连接,就是卡在子网IP分配和流量分流这俩坎儿上对吧?别慌,咱们一步一步给你理清楚怎么弄:

一、先搞定VPN服务器端的子网IP分配(让本地机器拿到适配10.0.0.x的IP)

你得先让本地机器拿到属于10.0.0.x私有子网段的IP,不然就算连了VPN,子网里的其他服务器也不认你的IP:

  • 登录到你的VPN服务器(就是那个用eth0做公网入口的VPS),打开/etc/strongswan/ipsec.conf,找到你那个IKEv2的连接配置段(应该是conn ikev2-rw那段),加上或者确认有这些配置:
    leftsubnet=10.0.0.0/24  # 只转发私有子网的流量,后面分流要用
    rightsubnet=10.0.0.0/24
    rightsourceip=10.0.0.100-10.0.0.150  # 这个IP池要在你的10.0.0.x子网里,别和现有VPS的IP重复
    
  • 然后扫一眼/etc/strongswan/ipsec.secrets,确保认证相关的配置(PSK或者证书)是对的——你已经能连上VPN,这步应该没问题,保险起见确认下就行
  • 最后重启Strongswan服务让配置生效:sudo systemctl restart strongswan-starter

二、把VPN服务器的IP转发和路由配置坐实

你已经临时开了sysctl net.ipv4.ip_forward=1,但这个重启就会失效,得把它设成永久的:

  • 编辑/etc/sysctl.conf,找到net.ipv4.ip_forward=1这一行(没有的话就加上),把前面的注释符号#去掉,然后执行sudo sysctl -p让配置立刻生效
  • 接下来要让私有子网里的VPS能把返回的流量发回给你的本地机器,得加个NAT规则:
    在VPN服务器上执行这条命令:
    sudo iptables -t nat -A POSTROUTING -s 10.0.0.100/25 -o eth1 -j MASQUERADE
    
    这里的10.0.0.100/25要对应你刚才设置的IP池范围,这样本地机器的流量会被伪装成VPN服务器eth1的IP,其他VPS就能正常回应了

三、配置流量分流(本地机器同时上公网+访问私有子网)

这个就是你说的“split traffic”,核心就是只把10.0.0.x的流量导去VPN,其他流量还走本地网络:

服务器端配置

刚才在ipsec.conf里我们已经把leftsubnet设成了10.0.0.0/24,而不是0.0.0.0/0——这个很关键,要是设成0.0.0.0/0,所有流量都会走VPN,就没法同时上公网了

本地机器配置

  • 连接VPN后,先执行ip route show看看路由表,正常情况下会自动多一条10.0.0.0/24的路由,指向VPN隧道设备(比如ipsec0
  • 如果没自动加上,就手动补一条:
    sudo ip route add 10.0.0.0/24 via <你的VPN分配的本地IP的网关,比如10.0.0.1> dev ipsec0
    
    要是不知道网关,就看VPN服务器eth1的IP,那个就是子网网关
  • 最后确认下本地的默认路由还是指向你的本地路由器IP,这样除了10.0.0.x的流量,其他都走本地公网

四、验证配置是否生效

  • 本地机器上执行sudo ipsec status,确认Security Associations是1 up的状态
  • 尝试ping私有子网里的任意一台VPS(比如ping 10.0.0.2),能通就说明转发没问题
  • 同时打开浏览器刷个公网网站,能正常访问就说明分流生效了

备注:内容来源于stack exchange,提问作者digitalcreative.tech

火山引擎 最新活动