alect

简易教程: Anyconnect( ocserv)启用 IPv6 支持

  •  
  •   alect · Nov 6, 2015 · 12367 views
    This topic created in 3865 days ago, the information mentioned may be changed or developed.
    昨天有 V2EX 的朋友 @nolan1864 问如何启用 IPv6 地址,这里简单说下我自己是如何实现的。本人使用环境 ubuntu 1404 lts

    首先 apt 安装必须的安装包:
    apt-get install build-essential libwrap0-dev libpam0g-dev libdbus-1-dev libreadline-dev libnl-route-3-dev libprotobuf-c0-dev libpcl1-dev libopts25-dev autogen libgnutls28-dev libseccomp-dev libtalloc-dev gperf liblz4-1 liblz4-1 liblz4-dev liblz4-tool dnsmasq

    启用 LZ4 压缩:
    cd /usr/local/src
    wget https://github.com/Cyan4973/lz4/archive/r129.tar.gz -O lz4-r129.tar.gz
    tar -zxf lz4-r129.tar.gz
    cd lz4-r129
    make && make install

    编译 ocserv :
    cd /usr/local/src
    wget ftp://ftp.infradead.org/pub/ocserv/ocserv-0.10.9.tar.xz
    tar xvf ocserv-0.10.9.tar.xz
    cd ocserv-0.10.9
    sed -i 's/define DEFAULT_CONFIG_ENTRIES 96/define DEFAULT_CONFIG_ENTRIES 200/g' src/vpn.h
    ./configure --prefix=/usr --sysconfdir=/etc
    make && make install

    修改 sysctl.conf 文件开启 ipv4 以及 ipv6 转发功能
    net.ipv4.ip_forward = 1
    net.ipv6.conf.all.forwarding=1


    启用 iptables 规则:
    iptables -t nat -A POSTROUTING -j MASQUERADE
    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
    ip6tables -A INPUT -p icmpv6 --icmpv6-type router-advertisement -m hl --hl-eq 255 -j ACCEPT
    ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -m hl --hl-eq 255 -j ACCEPT
    ip6tables -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -m hl --hl-eq 255 -j ACCEPT
    ip6tables -A INPUT -p icmpv6 --icmpv6-type redirect -m hl --hl-eq 255 -j ACCEPT

    以上几个比较重要的步骤都写清楚了,剩下的就是编辑 ocserv.conf 文件,将 ipv6 地址池加入,一般就可以访问了。如果服务器本身无 ipv6 ,则去 tunnelbroker 申请一下一样能用。 Ocserv 官网介绍说支持
    Supplement 1  ·  Dec 19, 2020
    既然有人挖坟,我就更新下帖子吧。

    现在常用的版本比如 centos7 以上,ubuntu18 以上,都已经集成了 ocserv
    我以 linode 为例,系统为 ubuntu 18.04 lts, 后台申请好 ipv6 以后,
    更新 ocserv.conf 文件里面加上 ipv6 地址池。
    sysctl.cnf 文件更新为 ipv4 和 ipv6 转发都设置为 1 即可,

    此外上面提到的几个 iptables 一样要执行。

    ocserv 配置文件我也贴一下。
    https://pastebin.com/LsiTdHpf
    9 replies    2020-12-19 18:07:52 +08:00
    nolan1864
        1
    nolan1864  
       Nov 7, 2015
    google 搜了好久找不到,太感谢了。
    testboy
        2
    testboy  
       Apr 5, 2016
    你好,我想咨询下,如果需要给 anyconnect 的客户端也分配公网的 v6 地址应该怎么做呢?比如 ISP 给我分配了一段 /96 的地址,我想给每个 anyconnect 客户端也分配一个公网的 v6 地址。。
    按照你这个,好像只能分配私网 v6 地址?谢谢
    alect
        3
    alect  
    OP
       Apr 6, 2016
    @testboy 我这个就是分配的公网 IPv6 地址。
    比如设置: ipv6-network = 2001:470:19:bb8::/64
    不可能分配到内网 ipv6 地址。。
    liuminghao233
        4
    liuminghao233  
       Nov 17, 2016
    为什么我这样设置分配给客户端的是内网 ipv6

    用的是 Vultr

    现在服务端跟客户端可以互 ping 但是客户端只能 ipv4 上网。
    knva
        5
    knva  
       Nov 2, 2017
    我这么做之后,上网是 nat 的方式. v6 实际上只是个内网
    luosonghao
        6
    luosonghao  
       Jan 15, 2020
    ip6tables -t nat -A POSTROUTING -j MASQUERADE
    luosonghao
        7
    luosonghao  
       Dec 19, 2020 via Android
    这相当于把 IPv6 地址进行 NAT 了
    alect
        8
    alect  
    OP
       Dec 19, 2020
    @luosonghao #7 时隔一年你竟然来挖坟。不过我依然说我的配置有效。刚截的图



    [Imgur]( https://imgur.com/2VYRR6U)
    alect
        9
    alect  
    OP
       Dec 19, 2020
    @luosonghao #7 [Imgur]( https://imgur.com/RpYBDqb)

    我这设置的确实是我 ipv6 地址池里面的 ip
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2509 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 01:33 · PVG 09:33 · LAX 18:33 · JFK 21:33
    ♥ Do have faith in what you're doing.