BLOGTIMES
2021/02/25

SoftEther を CentOS 8 にインストール

  softether  centos8 
このエントリーをはてなブックマークに追加

久しぶりに SoftEther を CentOS 8 にインストールしてみました。
これも Dokcer 化しても良かったのですが、ネットワーク周りとかいろいろと面倒なことになりそうなので、これは直接に VM にインストールしてしまうことにしました。

手順としてはこんな感じでしょうか。

dnf -y groupinstall "Development Tools" dnf -y install readline-devel ncurses-devel openssl-devel wget https://jp.softether-download.com/files/softether/v4.34-9745-rtm-2020.04.05-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz tar zxvf softether-vpnserver-v4.27-9668-beta-2018.05.29-linux-x64-64bit.tar.gz chmod 700 vpnserver pushd vpnserver make i_read_and_agree_the_license_agreement cat << EOS > ./adminip.txt 192.168.0.0/16 EOS popd mv vpnserver /usr/local/bin cat << EOS > /etc/systemd/system/softether.service [Unit] Description=SoftEther VPN Server After=network.target [Service] Type=forking ExecStart=/usr/local/vpnserver/vpnserver start ExecStartPre=/sbin/ip link set dev ens224 arp off promisc on ExecStop=/usr/local/vpnserver/vpnserver stop [Install] WantedBy=multi-user.target EOS systemctl daemon-reload systemctl enable softether.service systemctl status softether.service cat << EOS > /etc/firewalld/services/softether.xml <service> <short>Softether</short> <description>Softether VPN Server</description> <port protocol="tcp" port="443"/> <port protocol="tcp" port="5555"/> <port protocol="udp" port="443"/> <port protocol="udp" port="5555"/> </service> EOS firewall-cmd --reload firewall-cmd --add-service=softether firewall-cmd --runtime-to-permanent nmcli connection show ens224 connection.zone nmcli connection up ens224

AES-NI に対応させるとか、リージョンロックを外すとか

上記だけでも普通に使うことはできますが、スマートカードとか証明書対応したい場合にはさらに以下の手順が必要です。

最近の OpenSSL は AES-NI が有効になっているので、もしかしたら以前やっていた AES-NI 対応は意味がないかもしれません。ちなみに Intel のライブラリは CPUID で GenuineIntel かどうかを見ているので、CPU が AMD の場合には AuthenticAMD を認識できるようにしてやる必要もあります。

具体的な手順としては以下のような感じになります。

wget https://software.intel.com/sites/default/files/article/181731/intel-aesni-sample-library-v1.2.zip wget https://jp.softether-download.com/files/softether/v4.34-9744-beta-2020.03.20-tree/Source_Code/softether-src-v4.34-9744-beta.tar.gz wget https://raw.githubusercontent.com/el1n/OpenWRT-package-softether/master/softethervpn/patches/102-regionunlock.patch unzip intel-aesni-sample-library-v1.2.zip cat << EOS >./intel_aes_lib.patch --- Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/src/intel_aes.c.org 2010-10-01 17:37:14.000000000 -0400 +++ Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/src/intel_aes.c 2021-02-20 04:49:34.126103061 -0500 @@ -293,17 +293,30 @@ * ECX = 'l' 'e' 't' 'n' */ +// See: https://github.com/rrnewton/intel-aes/blob/master/cbits/Intel_AESNI_Sample_Library_v1.0/intel_aes_lib/src/intel_aes.c +// AuthenticAMD + + int intel = 1; + int amd = 1; if (memcmp((unsigned char *)&cpuid_results[1], "Genu", 4) != 0 || memcmp((unsigned char *)&cpuid_results[3], "ineI", 4) != 0 || memcmp((unsigned char *)&cpuid_results[2], "ntel", 4) != 0) - return no; + intel = 0; - __cpuid(cpuid_results,1); + if (memcmp((unsigned char *)&cpuid_results[1], "Auth", 4) != 0 || + memcmp((unsigned char *)&cpuid_results[3], "enti", 4) != 0 || + memcmp((unsigned char *)&cpuid_results[2], "cAMD", 4) != 0) + amd = 0; - if (cpuid_results[2] & AES_INSTRCTIONS_CPUID_BIT) - return yes; + if (intel || amd) + { + __cpuid(cpuid_results,1); - return no; + if (cpuid_results[2] & AES_INSTRCTIONS_CPUID_BIT) + return yes; + } + else + return no; } EOS sed -i "s/\r//g" Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/src/intel_aes.c patch -p0 --ignore-whitespace < intel_aes_lib.patch pushd ./Intel_AESNI_Sample_Library_v1.2/intel_aes_lib ./mk_lnx_lib64.sh popd cat << EOS > ./enable_aesni.patch --- src/makefiles/linux_64bit.mak.org 2021-02-20 03:15:08.467625594 -0500 +++ src/makefiles/linux_64bit.mak 2021-02-20 03:15:57.523605859 -0500 @@ -66,9 +66,9 @@ OPTIONS_LINK_DEBUG=-g -fsigned-char -m64 -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz -OPTIONS_COMPILE_RELEASE=-DNDEBUG -DVPN_SPEED -DUNIX -DUNIX_LINUX -DCPU_64 -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./src/ -I./src/Cedar/ -I./src/Mayaqua/ -O2 -fsigned-char -m64 +OPTIONS_COMPILE_RELEASE=-DUSE_INTEL_AESNI_LIBRARY -DNDEBUG -DVPN_SPEED -DUNIX -DUNIX_LINUX -DCPU_64 -D_REENTRANT -DREENTRANT -D_THREAD_SAFE -D_THREADSAFE -DTHREAD_SAFE -DTHREADSAFE -D_FILE_OFFSET_BITS=64 -I./src/ -I./src/Cedar/ -I./src/Mayaqua/ -O2 -fsigned-char -m64 -OPTIONS_LINK_RELEASE=-O2 -fsigned-char -m64 -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz +OPTIONS_LINK_RELEASE=-O2 ../Intel_AESNI_Sample_Library_v1.2/intel_aes_lib/lib/x64/intel_aes64.a -fsigned-char -m64 -lm -ldl -lrt -lpthread -lssl -lcrypto -lreadline -lncurses -lz INSTALL_BINDIR=/usr/bin/ INSTALL_VPNSERVER_DIR=/usr/vpnserver/ EOS tar zxvf softether-src-v4.34-9744-beta.tar.gz cd v4.34-9744/ patch -p1 < ../102-regionunlock.patch patch -p0 < ../enable_aesni.patch ./configure make cp -af ./bin/vpnserver/* /usr/local/vpnserver systemctl restart softether.service

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/12314
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン