Linode CentOS 配置 ocserv

注意:本文最后更新于 588 天前,有关的内容可能已经发生变化,请参考使用。

最近发现在电信网络上用 Vultr 的日本线路丢包量惊人,体验也越来越糟糕。无奈之下准备关闭 Vultr 的日本节点 VPS 并转到 Linode 的新加坡节点。坊间传闻用 360 之类的国产全家桶和 PPTP 方式会加速梯子的消亡,所以准备关闭 pptp 支持,只留用 ss、反代和 Anyconnect。因为 iphone 不越狱的情况下最好的科学上网工具应该就是 Anyconnect 了,以后凡是用国产全家桶的 TX,不予共享帐号。

AnyConnectICS_logo.jpg

第三方源安装

I. 添加EPEL源

EPEL (Extra Packages for Enterprise Linux,企业版Linux的额外软件包) 是Fedora小组维护的一个软件仓库项目,为RHEL/CentOS提供他们默认不提供的软件包。目前EPEL已经有了Centos6/7的ocserv。

首先根据版本下载EPEL源包(以Centos6为例),并进行安装

    wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
    sudo rpm -ivh epel-release-6-8.noarch.rpm

II. 安装ocserv

进行一次更新后直接安装ocserv

    yum -y update
    yum install ocserv -y

成功安装之后就跳到配置部分吧。


编译安装

III. 准备编译需要的环境

    yum install expat-devel autoconf automake gcc libtasn1-devel zlib zlib-devel trousers trousers-devel gmp-devel gmp xz texinfo libnl-devel libnl tcp_wrappers-libs tcp_wrappers-devel tcp_wrappers dbus dbus-devel ncurses-devel pam-devel readline-devel bison bison-devel flex gcc automake autoconf wget

IV. 安装 nettle

    wget http://ftp.gnu.org/gnu/nettle/nettle-2.7.1.tar.gz
    tar zxf nettle-2.7.1.tar.gz && cd nettle-2.7.1
    ./configure --prefix=/usr
    make && make install
    ldconfig 

V. 安装 unbound

    wget http://unbound.nlnetlabs.nl/downloads/unbound-1.4.22.tar.gz
    tar zxf unbound-1.4.22.tar.gz && cd unbound-1.4.22
    ./configure --prefix=/usr&& make && make install
    mkdir -p /etc/unbound && unbound-anchor -a "/etc/unbound/root.key"

VI. 安装 gnutls

    wget ftp://ftp.gnutls.org/gcrypt/gnutls/v3.2/gnutls-3.2.12.1.tar.xz
    xz -c -d gnutls-3.2.12.1.tar.xz | tar x
    cd gnutls-3.2.12
    ./configure --prefix=/usr
    make && make install
    ldconfig

VII. 安装 LibNL:

    wget http://www.carisma.slowglass.com/~tgr/libnl/files/libnl-3.2.24.tar.gz
    tar xvf libnl-3.2.24.tar.gz
    cd libnl-3.2.24
    ./configure --prefix=/usr
    make && make install
    ldconfig

VIII. 安装 libev

    git clone https://github.com/enki/libev.git
    cd libev
    ./configure --prefix=/usr
    make && make install
    ldconfig

IX. 安装 ocserv

    wget ftp://ftp.infradead.org/pub/ocserv/ocserv-0.8.9.tar.xz
    tar xvf ocserv-0.8.9.tar.xz
    cd ocserv-0.8.9
    ./configure && make && make install

如果是在 ARM 平台上,需要./configure --disable-seccomp,否则会因为 libseccomp 的原因出现 Makefile:1459: recipe for target 'worker-privs.o' failed

此外,如果 nettle 和 gnutls 安装在 /usr/local 目录,需要运行以下命令设置系统变量,再运行./configure。

    export LIBNETTLE_CFLAGS="-I/usr/local/include/" LIBNETTLE_LIBS="-L/usr/local/lib/" LIBGNUTLS_CFLAGS="-I/usr/local/include/" LIBGNUTLS_LIBS="-L/usr/local/lib/"

X. 常见问题

遇到 No package 'gnutls' found 问题时执行以下命令定位 gnutls 包。

    export LIBGNUTLS_CFLAGS="-L/usr/include" LIBGNUTLS_LIBS="-L/usr/lib64 -lgnutls"

如果 protobuf-c/protobuf-c.h 未找到之类的问题,请删除通过 yum 安装的 protobuf,profobuf-devel 之类的包

    yum remove protobuf

如果中间还遇到一些莫名其妙的问题,不妨再手动更新一下 aclocal automake autoconf 这几个包,yum 里的有点老。

    yum remove aclocal automake autoconf -y
    wget http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
    tar -zxvf autoconf-latest.tar.gz