V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alect
V2EX  ›  分享发现

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

  •  
  •   alect · 2015-11-06 10:07:43 +08:00 · 11313 次点击
    这是一个创建于 3305 天前的主题,其中的信息可能已经有所发展或是发生改变。
    昨天有 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 官网介绍说支持
    第 1 条附言  ·  2020-12-19 18:17:35 +08:00
    既然有人挖坟,我就更新下帖子吧。

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

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

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

    用的是 Vultr

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



    [Imgur]( https://imgur.com/2VYRR6U)
    alect
        9
    alect  
    OP
       2020-12-19 18:07:52 +08:00
    @luosonghao #7 [Imgur]( https://imgur.com/RpYBDqb)

    我这设置的确实是我 ipv6 地址池里面的 ip
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1876 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 16:23 · PVG 00:23 · LAX 08:23 · JFK 11:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.