UbuntuでのSoftEtherVPNのインストール手順

OS:Ubuntu16.10
SoftetherVPN:4.21

ビルドするためのパッケージをインストール。

# apt-get install build-essential

http://www.softether-download.com/ja.aspx?product=softetherからOSに合ったVPN ServerのURLを取得しセットアップファイルを取得する。

$ wget [URL]

ダウンロードしたファイルを移動。

# mv ファイル名.tar.gz /usr/local/

ファイルを展開。

# tar xvzf ファイル名.tar.gz

インストールディレクトリに移動。

# cd /usr/local/vpnserver/

ビルドするためにmakeコマンドの実行。

# make

/etc/systemd/system/vpnserver.serviceを下記内容で作成する。

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target

自動起動を有効にして、サービスを起動する。

# systemctl enable vpnserver
# systemctl start vpnserver

設定ツールをさっきのとこからダウンロード。設定をウィザードでWindowsから行った。

下記ポート開放して、とりあえず動いてる。
50/tcp 500/udp 4500/udp

Ubuntuにアップデートを適用する

パッケージの最新リストをサーバーから入手する。

# apt-get update

インストールされているパッケージを最新にアップデートする。

# apt-get -y upgrade

ディストリビューションを最新にアップデートする。

# apt-get -y dist-upgrade

CentOS7へMySQL5.7をインストールする

CentOS7はデフォルトでMariaDBがインストールされていると思われるので、削除。

# yum remove mariadb-libs
# rm -d -r -f /var/lib/mysql/

MySQLサーバーをローカルインストール。
※https://dev.mysql.com/downloads/repo/yum/を参考に適宜URLを変更

# yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

MySQLサーバーをインストール。

# yum -y install mysql-community-server

文字コードをUTF-8に設定する。
/etc/my.cnfを編集して下記1行を追加。

character-set-server = utf8

MySQLサーバーが自動起動するよう構成。

# systemctl enable mysqld.service

MySQLサーバーを起動。
※この時点でrootのパスワードが自動生成されログに書き込まれる(/var/log/mysqld.log)

# systemctl start mysqld.service

MySQLサーバーの初期設定。

# mysql_secure_installation

パスワードポリシーをMEDIUMからLOWに変更する。
mysql -p でログイン後に

SET GLOBAL validate_password_policy=LOW

php-mysqlのインストール。

# yum -y install php-mysql

CentOS7へApacheとPHPをインストールする

Apacheをインストールする。

# yum install httpd

サブドメイン毎のルートディレクトリを設定する。
設定ファイル最下部に下記を追記する。

<VirtualHost *:80>
    ServerName test.example.com
    DocumentRoot "/var/www/html/test/"
    <Directory "/var/www/html/test/">
        AllowOverride All
    </Directory>
</VirtualHost>

SELinuxのラベル付けを行うためのユーティリティをインストールする。

# yum install policycoreutils-python

ルートディレクトリ以下をhttpdで読み書き可能にするSELinuxのラベル付け。

# semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/test(/.*)?"
# restorecon -RF /var/www/html/test/

httpdがネットワークに接続することを許可するSELinuxの設定。

# setsebool -P httpd_can_network_connect true

PHPと使用する拡張機能をインストールする。

# yum install php
# yum install php-mbstring
# yum install php-json
# yum install php-mysqlnd
# yum install php-xml
# yum install php-gd

Apacheを有効化してサービスを起動する。

# systemctl enable httpd
# systemctl start httpd

ファイアウォールに例外を追加する。

# firewall-cmd --add-service=http --permanent
# firewall-cmd --add-service=https --permanent

ファイアウォールの設定を読み込み。

# firewall-cmd --reload

yumについて

パッケージ一覧を閲覧する。

# yum list

グループパッケージ一覧を閲覧する。hiddenを付けないと表示されないパッケージがある。

# yum grouplist hidden

正規表現について

パターン 意味
パターン 文字列と結果
^ 先頭にマッチする “^ab” “abcd” => true
“cdab” => false
$ 末尾にマッチする “ab$” “abcd” => false
“cdab” => true
. 任意の1文字にマッチする “a.c” “abc” => true
“abbc” => false
“ac” => false
? 直前の文字が0個または1個にマッチする “^A?$” “” => true
“A” => true
“AA” => false
“B” => false
* 直前の文字が0個以上にマッチする “^A*$” “” => true
“A” => true
“AA” => true
“B” => false
+ 直前の文字が1個以上にマッチする “^A+$” “” => false
“A” => true
“AA” => true
“B” => false
\d 半角数値(0-9)にマッチする
※ [0-9]と同じ
“\d” “0123” => true
“0123” => false
“abc” => false
\D 半角数値(0-9)以外にマッチする
※ [^0-9]と同じ
“\D” “0123” => false
“0123” => true
“abc” => true
\w 半角英数値(0~9、a~z、A~Z、_)にマッチする
※ [0-9a-zA-Z_]と同じ
“\w” “012_AbC” => true
“12Ab” => false
“#$%&” => false
\W 半角英数値(0~9、a~z、A~Z、_)以外にマッチする
※ [^0-9a-zA-Z_]と同じ
“\w” “012_AbC” => false
“12Ab” => true
“#$%&” => true
[ ] いずれかの文字とマッチする “[ABC]” “A” => true
“B” => true
“D” => false
( ) 1つのグループとして扱う “(ABC)” “ABC” => true
“CBA” => false
{n} 直前の文字にn回マッチする “^A{3}$” “AA” => false
“AAA” => true
“AAAA” => false
{n,} 直前の文字にn回以上マッチする “^A{3,}$” “AA” => false
“AAA” => true
“AAAA” => true
{n,m} 直前の文字にn回以上m回以下マッチする “^A{3,4}$” “AA” => false
“AAA” => true
“AAAA” => true
“AAAAA” => false
| いずれかとマッチする “ABC|DEF” “ABC” => true
“DEF” => true
“CBA” => false
“DE” => false
範囲を指定する “[3-7]” “2” => false
“3” => true
“7” => true
“8” => false
^ 否定([ ]の中で使用する) “[^AB]” “A” => false
“B” => false
“C” => true
&& かつ “[0-9&&[^4]]” “3” => true
“4” => false
“5” => true

batファイルで変数を扱う

変数に値を入力するには SET を使い、値を使うには %変数名% で利用可能。

SET test=abcd
ECHO %test%

→ 結果はabcd

変数の文字を抽出するには :~0,0 を使う。

ECHO %test:~0,2%

→ 結果はab

変数内の文字を置き換えするには :x=y を使う。

ECHO %test:cd=ef%

→ 結果はabef

応用してyyyyMMddHHmmssを取得する。

SET test=%date%%time:~0,8%
SET test=%test:/=%
SET test=%test: =0%
SET test=%test::=%
ECHO %test%

→ 結果は20161106100152

viエディタの基本的な使い方

ファイルを開く(ファイルが存在しない場合は新規作成)

vi /home/user/test.txt

閲覧モードで h で左移動、j で下移動、k で上移動、l で右移動

閲覧モードで G で最終行へ移動

閲覧モードで x で1文字削除

閲覧モードで dd で1行削除

閲覧モードで A で選択中の行末から編集モード開始

ESC で編集モードを終了

閲覧モードで :wq 後にEnterキーで上書き保存して終了

閲覧モードで :q! 後にEnterキーでviを強制終了

閲覧モードで v で範囲選択開始

範囲選択後に d で切り取り

範囲選択後に y でコピー

切り取りまたはコピー後に P で貼り付け

閲覧モードで Ctrl + f でページダウン

閲覧モードで Ctrl + b でページアップ

閲覧モードで / で検索 (nで次候補)

肯定先読み・否定先読み

良く理解しないで書いてます。

【例1】
パターン:(?=.*?[A-Z])^[0-9]{3,}
結果
"1"=>False "B"=>False "1A"=>False "2AAA"=>False
"333"=>False "333A"=>True "4444BBBB"=>True "@555C"=>False

(?= )肯定先読みの部分でA-Zを指定し、312Aや145Bなど、数字の後にA-Zが付いている場合のみマッチする。良く分からないが「.*」がないと再帰的にテストしてくれない。「.*?」の?はなくても動くが、入れた方がパフォーマンスの面で優れているので入れてます。regex101で確認すると面白いです。
regex101.com

【例2】
パターン:(?=.*?[0-9])(?=.*?[#%])(?=.*?[a-z])^[0-9a-z#%]{5,}$
結果
"a1#z4"=>True "aa1bca"=>False "000##34"=>False

肯定先読みで[0-9][#%][a-z]をそれぞれ別に指定し、[0-9a-z#%]の後に[0-9]、[0-9a-z#%]の後に[#%]、[0-9a-z#%]の後に[a-z]のすべての条件を満たした場合のみマッチする。

【例3】否定先読み
パターン:^[a-z0-9]{1,}\.(?!(rms|test)\.)[a-z0-9]{1,}\.rakuten\.co\.jp\/
結果
"glogin.rms.rakuten.co.jp"=>False "basket.step.rakuten.co.jp/rms/"=>True
"grp02.id.rakuten.co.jp/rms/"=>True

RMS以外のログインURLにだけマッチさせる正規表現。

名称 パターン
肯定先読み (?=pattern)
肯定戻り読み (?<=pattern)
否定先読み (?!pattern)
否定戻り読み (?<!pattern)