CentOS 7 minimalからPacketix VPNへ接続する。

# CentOS 7 minimalからPacketix VPNへ接続する。

CentOS7でPacketix VPN Clientを使って動作させるまでの手順を記載します。

基本的にはこの記事のコード部分をCLIで実行するだけです。

## 前提

- CentOS 7 minimal

## 作業内容

### 必要なパッケージをインストール

yumを使って必要なパッケージをインストールします。

```bash
sudo yum groupinstall "development tools"
sudo yum install bzip2-devel gdbm-devel libffi-devel \
  libuuid-devel ncurses-devel openssl-devel readline-devel \
  sqlite-devel tk-devel wget xz-devel zlib-devel
```

# Packetix VPN Client

Packetix VPNを公式からダウンロードします。wgetを使います。

### ダウンロードと解凍

```bash
yum install wget
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.32-9731-beta/softether-vpnclient-v4.32-9731-beta-2020.01.01-linux-x64-64bit.tar.gz
tar xfz softether-vpnclient-*-linux-x64-64bit.tar.gz
```

### インストール

```bash
cd vpnclient
make
# Yesの1を3回入力
# 元のディレクトリへ移動
cd ../
# ダウンロードしたものを削除
rm softether-vpnclient-*-linux-x64-64bit.tar.gz
```

### ソフトウェアの移動と権限の変更

```bash
# ディレクトリ移動
sudo mv vpnclient /usr/local/.
# 権限変更
chmod 600 /usr/local/vpnclient/*
chmod 700 /usr/local/vpnclient/vpncmd
chmod 700 /usr/local/vpnclient/vpnclient
# vpncmdを実行してヘルスチェック
/usr/local/vpnclient/vpncmd
# 3を押す。
# ヘルスチェック
VPN Tools>check
# 設定画面終了
VPN Tools>exit
```

### Firewallの設定

```bash
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
sudo firewall-cmd --zone=public --add-port=992/tcp --permanent
sudo firewall-cmd --zone=public --add-port=5555/tcp --permanent
sudo firewall-cmd --reload
```

### VPN Clientを起動

vpncmdを使うために、vpnclientを起動します。

```bash
sudo /usr/local/vpnclient/vpnclient start
```

> https://www.itcore.jp/tips/softether_client.php
> サービス化など
> http://harukarium.sblo.jp/article/184766762.html

#### VPN Clientで設定

vpncmdでNicカードを作ります。また、vpnの接続先を設定します。`XXX`を適宜修正してください。

```bash
# Nicを作成
sudo /usr/local/vpnclient/vpncmd /client localhost /cmd NicCreate vpns
# SERVERの設定
sudo /usr/local/vpnclient/vpncmd /client localhost /cmd AccountCreate vpn_th /SERVER:XXX.XXX.XXX.XXX:XXXX /HUB:VPN-Hub /USERNAME:user_name /NICNAME:vpns
# SERVERに接続するためのパスワードを入力
sudo /usr/local/vpnclient/vpncmd /client localhost /cmd AccountPasswordSet vpn_th /TYPE:standard
```

### インターフェースの設定

> https://qiita.com/Daisuke-Otaka/items/b9d99c9dcbb84cf813d7

> http://mzgkworks.com/post/linux-centos7-network-setting/

以下を実行してネットワークアダプタ用のファイルを作成します。

```bash
# 一旦vpnclient停止
# ファイルの命名規則は/etc/sysconfig/network-scripts/ifcfg-vpn_設定した名前
# NM_CONTROLLED=”no”にしないとエラー
# http://frym.jp/?p=1377
sudo cat << '_EOT_' | sudo tee /etc/sysconfig/network-scripts/ifcfg-vpn_vpns
BOOTPROTO=none
PEERDNS=no
DEVICE=vpn_vpns
ONBOOT=yes
USERCTL=no
NM_CONTROLLED=no
IPADDR=192.168.XXX.XXX
NETMASK=255.255.255.0
_EOT_
```

### ネットワークの再起動と確認

```bash
# ネットワーク再起動
sudo systemctl restart network
# ステータス閲覧
sudo systemctl status network
# デバイスのダウン
# sudo ifdown vpn_vpns
# デバイスのアップ
# sudo ifup vpn_vpns
# ネットワークログ確認
sudo journalctl -xe
```

### サービス化

vpnclientの起動と終了をサービス化します。

```bash
sudo cat << '_EOT_' | sudo tee /etc/systemd/system/vpnclient.service
[Unit]
Description=SoftEther VPN Server
Before=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnclient/vpnclient start
ExecStop=/usr/local/vpnclient/vpnclient stop
_EOT_
sudo systemctl start vpnclient
sudo systemctl enable vpnclient
sudo systemctl status vpnclient
```

# 開始と終了

### 開始

```bash
# ネットワークの再起動
sudo systemctl restart network
# クライアントの起動(手動)
# sudo /usr/local/vpnclient/vpnclient start
# vpnの接続
sudo /usr/local/vpnclient/vpncmd /client localhost /cmd AccountConnect vpn_th
```

### 確認

```bash
# 動作しているか起動中のデバイスの表示
sudo nmcli device show vpn_vpns
# 接続先のPingで確認
ping 192.168.XXX.XXX
```

### 終了

```bash
# 切断
sudo /usr/local/vpnclient/vpncmd /client localhost /cmd AccountDisconnect vpn_th
# 停止(手動)
# sudo /usr/local/vpnclient/vpnclient stop
```