*

SoftEther VPNでLinux録画サーバを外部から接続する方法(CentOS 7編)

  最終更新日:2018/02/18

SoftEther VPNでLinux録画サーバを外部から接続する方法(CentOS 7編) SoftEther VPNでLinux録画サーバを外部から接続する方法(CentOS 7編)

 SoftEther VPNを使ってLinux録画サーバを外部から接続する方法について説明します。この記事では外出先でスマホやPCからChinachu、epgrec UNAの録画予約ができることを最終目標としています。

 IPsec/L2TPにより暗号化されたVPN接続を行うので、比較的安全に外出先から家のLAN環境に接続することが可能になります。一旦VPN接続することができれば、家のLAN環境のあらゆるネットワーク機器にアクセス可能になり非常に便利です。

 本記事でSoftEther VPNサーバーをインストールするOSはCentOS 7です。しかし、主な設定はWindowsから行います。これは、設定アプリがWindows用しか用意されていないためです(一応コマンドでも設定可能なようですが…)。Mac OSやLinuxから設定する場合、仮想環境のWindowsやWineを使用して下さい(これらの方法については説明しません)。

 Windowsからの設定方法については、後編の「Linux版SoftEther VPNのIPsec/L2TP設定方法」にて説明します。

スポンサーリンク

注意事項

 最初に注意事項があります。ネットワークの設定を大幅に変更するため、よく理解しないまま進めると最悪の場合ネットワークに繋がらなくなります。

 また、中途半端に作業を投げ出してしまうとネットワークの動作がおかしくなる可能性もあります。ですので、できれば後編の記事まで読んでから試して下さい。

 一応Linux初心者でもなんとなく理解可能なように記事を書いたつもりです。ですが、確実に理解するためにはTCP/IPの基礎知識が必要です。

 家のLAN環境でルーターになんとなく接続して、よく理解しないままインターネットにつないでいる人には多分最後まで進めることは出来ないでしょう。それぐらい難しいと考えて下さい。

SoftEther VPNサーバーのインストール

 SoftEther VPNサーバーのインストールの前に環境を最新の状態にします。以降はrootユーザーで実行して下さい。

# yum -y update

  ifconfigを使用したいので、下記をインストール

# yum -y install net-tools

  開発環境を構築していない場合、下記も実行します

# yum -y groupinstall 'Development tools'

 SoftEther VPNサーバーを以下のページからダウンロードします。

 選択肢は以下を選んで下さい。もし32bit版のLinuxを使用している場合、CPUは”Intel x86 (32bit)”を選びます。

  • コンポーネント:SoftEther VPN Server
  • プラットフォーム:Linux
  • CPU:Intel x64 / AMD64 (64bit)

 本記事投稿時点のファイル名は、”softether-vpnserver-v4.19-9599-beta-2015.10.19-linux-x64-64bit.tar.gz”です。このファイルをLinuxに転送して下さい。

 ファイルを解凍し、ビルドします。

# tar xvzf softether-vpnserver-v4.19-9582-beta-2015.10.06-linux-x64-64bit.tar.gz -C /usr/local
  ※解凍先を末尾の-Cオプションで/usr/local/にしているので注意

# cd /usr/local/vpnserver
# make

  以下、ライセンス契約の同意を3回求められるので、
  全て1を選択します。

    Do you want to read the License Agreement for this software ?
    Did you read and understand the License Agreement ?
    Did you agree the License Agreement ?

  途中、以下のメッセージが表示されればOKです。

    'カーネル系' のチェック中...
                  [合格] ○
    'メモリ操作系' のチェック中...
                  [合格] ○
    'ANSI / Unicode 文字列処理系' のチェック中...
                  [合格] ○
    'ファイルシステム' のチェック中...
                  [合格] ○
    'スレッド処理システム' のチェック中...
                  [合格] ○
    'ネットワークシステム' のチェック中...
                  [合格] ○

 ファイルの実行権を変更します。

# chmod 600 *
# chmod 700 vpn*

 続いて起動設定を行います。

# vi /etc/systemd/system/vpnserver.service

  SoftEther VPNサーバーのsystemd設定(後述)をコピペします。

# vi /usr/local/vpnserver/add_tap.sh

  tapデバイスのブリッジ追加用スクリプト(後述)をコピペします。

# chmod +x /usr/local/vpnserver/add_tap.sh
# systemctl enable vpnserver
# systemctl start vpnserver
# pidof vpnserver

  最後に数字が2つ表示されることを確認します。

SoftEther VPNサーバーのsystemd設定の内容は以下です。ダブルクリックすると全体を選択した状態になるのでCtrl+Cでコピーして下さい。

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

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStartPost=/usr/local/vpnserver/add_tap.sh
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target

 tapデバイスのブリッジ追加用スクリプトの内容は以下です。

#!/bin/sh

sleep 3
tap_dev=`/sbin/ip tuntap | awk -F: '{print $1}'`
if [ -n "$tap_dev" ]; then
	/sbin/brctl addif br0 $tap_dev
fi

ブリッジインタフェース設定

 SoftEther VPNでIPsec/L2TPによるVPN接続をする場合、ブリッジインタフェースが必要になります。インターネット側からSoftEther VPNサーバーに接続すると仮想インタフェースにIPアドレスを割り当てます。その仮想インタフェースと物理インタフェース(Ethernet)との通信の橋渡しをするのがブリッジインタフェースです。

 設定に必要なパッケージをインストールし、ブリッジインタフェースを作成します。

# yum -y install bridge-utils

 最初に既存のネットワークインタフェースの名前を確認します。おそらく下記例の”enp2s0”の様になっていると思います。

# ifconfig

enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.1  netmask 255.255.255.0  broadcast 192.168.196.255

 説明を統一するために以下では既存のネットワークインタフェースを”enp2s0”として説明します。以降の”enp2s0”の表記は、皆さんの実際の環境に置き換えて下さい。今回の例では既存のネットワーク設定を以下としています。

IPアドレス 192.168.0.1
ネットマスク 24bit(255.255.255.0)
ゲートウェイ 192.168.0.254
DNSサーバ 192.168.0.10
192.168.0.20

 では、ブリッジインタフェースの”br0”を追加していきます。LANを固定IPとDHCPのどちらで管理しているかによってコマンド内容が異なるので注意して下さい。

# nmcli c add type bridge ifname br0
# nmcli c add type bridge-slave ifname enp2s0 master bridge-br0
# nmcli c mod bridge-br0 bridge.stp no

  LANを固定IPで管理している場合)
    # nmcli c mod bridge-br0 ipv4.method manual ipv4.address "192.168.0.1/24" ipv4.gateway "192.168.0.254"  ipv4.dns "192.168.0.10 192.168.0.20"
    ※ IPアドレス等は実際の環境に合わせて変更して下さい

  LANをDHCPで管理している場合)
    # nmcli c mod bridge-br0 ipv4.method auto

# nmcli c del enp2s0
  ※ ネットワーク経由で実行した場合、通信が切断されるので注意

 設定が完了したらPCを再起動し、IPアドレスの設定を確認します。下記のように”br0”にIPアドレスが設定され、”enp2s0”は未設定のように表示されれば成功です(不要な情報は削っています)。MACアドレスの箇所(”ether”の部分)が”br0”と”enp2s0”で同一であることも注意して下さい。

# ifconfig

br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.1  netmask 255.255.255.0  broadcast 192.168.0.255
        ether 00:11:22:33:44:55  txqueuelen 0  (Ethernet)

enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:11:22:33:44:55  txqueuelen 1000  (Ethernet)

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0

 念のため設定ファイル例を掲載しておきます。”enp2s0”の箇所は全て実際の環境のインタフェース名に置き換えて下さい。

# cat /etc/sysconfig/network-scripts/ifcfg-bridge-br0 

DEVICE=br0
STP=no
TYPE=Bridge
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=bridge-br0
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes


# cat /etc/sysconfig/network-scripts/ifcfg-bridge-slave-enp2s0

TYPE=Ethernet
NAME=bridge-slave-enp2s0
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
DEVICE=enp2s0
ONBOOT=yes
BRIDGE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

 次にブリッジ設定を確認します。”STP enabled”が”no”であること、”interfaces”に物理インタフェースの名前があることを確認して下さい。

# brctl show

bridge name     bridge id               STP enabled     interfaces
br0             8000.001122334455       no              enp2s0

ファイアウォール設定

 もしもファイアウォール(firewalld)が動作している場合、特定のポートを開けておく必要があります。既に無効にしている場合は下記を実行する必要はありません。

# firewall-cmd --permanent --add-service=https
# firewall-cmd --permanent --add-service=ipsec
# firewall-cmd --permanent --add-port=4500/udp
# firewall-cmd --reload

 設定が完了したら、開放されたサービスとポート番号を確認します。

# firewall-cmd --list-all

public (default, active)
  interfaces: br0 enp2s0
  sources:
  services: dhcpv6-client https ipsec ssh
  ports: 4500/udp
  masquerade: no 
  forward-ports: 
  icmp-blocks:   
  rich rules:

 ”services”に”https”と”ipsec”、”ports”に”4500/udp”があれば問題ありません。

最終確認

 以上でLinux側の基本的な設定は完了です。今までの説明で下記の確認事項に問題ないことを再度確認して下さい。一つでも駄目だとこれから先の設定は絶対にうまく行きません。

  • pidof vpnserverの実行結果で数字が2つ表示される
  • br0インタフェースが作成できている
  • br0インタフェースにIPアドレスが設定されている
  • ブリッジ設定の”STP enabled”が”no”である
  • ブリッジ設定の”interfaces”に物理インタフェースの名前がある
  • ファイアウォール設定が有効な場合、https、ipsec、4500/udpが開放されている

 次はWindowsにSoftEther VPNサーバー管理マネージャをインストールして最後まで設定を行います。後編の「Linux版SoftEther VPNのIPsec/L2TP設定方法」の記事で説明を続けます。

おまけ(ブリッジ設定を削除する方法)

 ブリッジインタフェースを削除して元に戻したい場合、下記を実行してPCを再起動します。

# nmcli c del bridge-slave-enp2s0
# nmcli c del bridge-br0
# nmcli c add type ether ifname enp2s0

  LANを固定IPで管理している場合)
    # nmcli c mod ethernet-enp2s0 ipv4.method manual ipv4.address "192.168.0.1/24" ipv4.gateway "192.168.0.254"  ipv4.dns "192.168.0.10 192.168.0.20"
    ※ IPアドレス等は実際の環境に合わせて変更して下さい

  LANをDHCPで管理している場合)
    # nmcli c mod ethernet-enp2s0 ipv4.method auto