利用公网ipv6搭建IPSec实现异地组网

本文以最差网络环境进行设置, 如果网络条件够好可以降低一部分设备要求, 同时可以减少一些不必要的设置.

前置条件:

2条宽带均支持ipv6, 且至少其中一条宽带可以访问到另一条宽带ipv6的至少2个udp端口

用到的设备:

2台tp-link高版本的er系列路由器(本文以一台er3200g v1.0和一台er6110g v4.0为例)
2台支持ipv6的小主机(本文以刷了armbian系统的机顶盒为例)

设备连接和部分配置图:

image.png

开始配置

配置er6110g (响应方, 至少有2个udp端口能被访问到一方,假如端口为8001和8002)
  1. 创建vlan

     

    image.png

2.配置nat

image.png

3.配置IPSec

image.png

image.png

image.png

配置er6110g下的Linux小主机

配置端口转发: PortForward u :8001+:8002 192.168.111.1:500+192.168.111.1:4500

PortForward 见前面的文章, 可以创建一个host网络的docker长期运行

配置er3200g下的Linux小主机

配置端口转发: PortForward u :500+:4500 [2408::6110]:8001+[2408::6110]:8002

假设[2408::6110]为er6110g的wan口ip
PortForward 见前面的文章, 可以创建一个host网络的docker长期运行

配置er3200g (发起方)
  1. 创建vlan

     

    image.png

  2. 配置IPSec

     

    image.png

image.png

image.png

问题排查

image.png

image.png

image.png

优化

  1. 如果被访问方可以获取到 ipv6子网前缀 就不需要再配置nat66了, 直接给它下面的Linux设备分配一个公网ipv6, 然后让发起方直接连拥有公网ipv6的armbian设备即可. 然后再配合ddns, 直接通过域名访问.

  2. 在通过ipv6进行数据转发时 建议通过u2t + t2u进行转发, 同时配置转发设备
    echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf && sysctl -p
    (armbian默认为bbr)
    原因有2:
    a. 一台设备一般可以分配多个ipv6, 在转发udp数据时可能存在响应方不采用收到数据的ipv6地址去响应数据(前面文章有说到过)
    b. 在用网高峰期可能会存在单线程tcp传输数据慢的问题(尤其是跨运营商, 这个问题困扰了我很久. 即使是公网ipv6直连也存在这样的问题, 和IPSec无关). 因为大多数设备的 tcp_congestion_control 是CUBIC, 在高延迟 高丢包率网络中速度会非常慢(tcp单线程40兆上行只能跑到5兆左右). 采用tcp传数据后, 用户设备的丢包率就会变为0 , 压力全部给到了ipv6数据转发设备, ipv6数据转发设备又采用的bbr 速率会有非常明显的提升(单线程几乎能跑慢带宽).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值