PCリンクスでは、パソコンの設定・修理から組込み機器の受託開発まで承ります。

 

SoftEther VPN 1.0 RC2でtapデバイスを試す

7回目の今回は、Raspberry PiにインストールしたSoftEther VPN 1.0 RC2 でtapデバイスを試します。

LinuxにSoftEther VPN Server をインストールすると、Linux固有の制限事項により、SoftEther VPN をインストールしたサーバ自身に、クライアントPCからアクセスすることが出来ないという、「困った問題」が発生します。
※サーバにインストールしたWebサーバやAsteriskをVPN接続したクライアントPCから使えません!

詳細は、こちら SoftEther VPN マニュアル – ローカルブリッジ を参照ください。

この問題に対処するために、今回は、SoftEther VPN のtapデバイス機能を使用します。
USBタイプのLANアダプタ(有線 or 無線)を追加することでも対応可能ですが、サーバ専用機としてRaspberry Piを使用する当方としては、余分なハードウェアは、追加したくはありません。 Simple is best! ですね。

 

tapデバイス使用時の概要

Raspberry PiにSoftErher VPN 1.00 RC2をインストールし、tapデバイスを使用するためには、SoftEther VPNの設定とLinux OSのネットワーク設定の変更が必要となります。

  • SoftEther VPN サーバ管理マネージャで、tapデバイスをローカルブリッジさせる
  • Linux OS起動時に、物理的なネットワークアダプタ(eth0)を仮想ブリッジにブリッジさせる
  • スタートアップスクリプトを修正し、VPNサーバ起動時に、tapデバイスを仮想ブリッジにブリッジさせる

Linux OSで、tapデバイスを使用する場合の構成図を以下に示します。

SE VPN Server kouseizu 300x240 SoftEther VPN 1.0 RC2でtap

 

ローカルブリッジ設定の変更

SoftEther VPN サーバ管理マネージャでローカルブリッジをtapデバイスに変更します。

SE VPN Server Manager 01 300x278 SoftEther VPN 1.0 RC2でtap

 

 

 設定済みであるローカルブリッジ設定を削除します。
 ローカルブリッジの削除をクリックします。

SE VPN Server Manager 02 300x278 SoftEther VPN 1.0 RC2でtap

 

 仮想HUBを選択します。

 新しいtapデバイスとのブリッジ接続を選択します。

 新しいtapデバイス名を入力します。

 入力が完了したら、ローカルブリッジを追加をクリックします。

SE VPN Server Manager 03 300x278 SoftEther VPN 1.0 RC2でtap

 

 

 tapデバイスがローカルブリッジされたことを確認して、閉じるをクリックします。

SE VPN Server Manager 04 300x197 SoftEther VPN 1.0 RC2でtap

 

 ネットワーク設定を確認します。

 tapデバイスが追加されていることを確認します。

 

ネットワーク設定の変更

Linux OS 側で、仮想ブリッジ (br0) を追加するために、ネットワーク設定を変更します。

最初に、bridge-utilsパッケージをインストールします。

[root@ms03 ~]# apt-get install bridge-utils

次に/etc/network/interfaces を編集して、物理的なネットワークアダプタ(eth0)を仮想ブリッジ(br0)にブリッジさせます。このとき、IPアドレス等の設定は、br0に割り当てし、eth0にはipアドレスを割り当てないようにします。

[root@ms03 ~]# pico /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

# SoftEther VPN 1.0 RC2
auto br0
iface br0 inet static
address 192.168.0.xx
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1

# tapデバイスはvpnserverでブリッジさせるので、eth0のみをブリッジする
bridge_ports eth0
bridge_maxwait 10

 

スタートアップスクリプトの変更

スタートアップスクリプトファイルを修正して、vpnserverを起動時にtapデバイスを仮想ブリッジへブリッジするように変更します。

[root@ms03 ~]# pico /etc/init.d/vpnserver
#!/bin/sh
### BEGIN INIT INFO
# Provides:                 vpnserver
# Required-Start:           $local_fs $network
# Required-Stop:            $local_fs $network
# Default-Start:            2 3 4 5
# Default-Stop:             0 1 6
# Short-Description:        SoftEther VPN 1.0 RC2
# Description:              Start vpnserver daemon SoftEther VPN 1.0 Server
### END INIT INFO
 
DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/vpnserver
 
. /lib/lsb/init-functions
 
test -x $DAEMON || exit 0
 
case "$1" in
start)
sleep 3
log_daemon_msg "Starting SoftEther VPN 1.0 Server" "vpnserver"
$DAEMON start >/dev/null 2>&1
touch $LOCK
log_end_msg 0
sleep 3
 
# SoftEther VPNで追加した仮想tapデバイス名を調べる
tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'`
/sbin/brctl addif br0 $tap
;;
 
stop)
log_daemon_msg "Stopping SoftEther VPN 1.0 Server" "vpnserver"
$DAEMON stop >/dev/null 2>&1
rm $LOCK
log_end_msg 0
sleep 2
 
;;
 
restart)
$DAEMON stop
sleep 2
 
$DAEMON start
sleep 5
# SoftEther VPNで追加した仮想tapデバイス名を調べる
tap=`/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}'`
/sbin/brctl addif br0 $tap
;;
 
status)
    if [ -e $LOCK ]
    then
        echo "vpnserver is running."
    else
        echo "vpnserver is not running."
    fi
;;
*)
 
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit 0

 

ここで、一旦、再起動させて、ネットワーク設定を確認します。

[root@ms03 ~]# reboot

SE VPN Server Manager 05 270x300 SoftEther VPN 1.0 RC2でtap

 

 

 起動時、br0インタフェースが起動していることを確認します。
 ※この時点では、tapデバイスはまだ起動していません。

 

 最後にvpnserverが起動し、tapデバイスをブリッジします。

 

ブリッジ動作の確認

ネットワーク設定を確認します。

[root@ms03 ~]# ifconfig
br0       Link encap:イーサネット  ハードウェアアドレス 00:ac:09:19:30:ae
          inetアドレス:192.168.0.xx ブロードキャスト:192.168.0.255  マスク:255.255.255.0
          inet6アドレス: fe80::ba27:ebff:feba:fb3d/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:399 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:402 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:0
          RXバイト:57783 (56.4 KiB)  TXバイト:57087 (55.7 KiB)

eth0      Link encap:イーサネット  ハードウェアアドレス b8:27:eb:xx:xx:xx
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:399 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:402 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:1000
          RXバイト:57915 (56.5 KiB)  TXバイト:61651 (60.2 KiB)

lo        Link encap:ローカルループバック
          inetアドレス:127.0.0.1 マスク:255.0.0.0
          inet6アドレス: ::1/128 範囲:ホスト
          UP LOOPBACK RUNNING  MTU:16436  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:0
          RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)

tap_vlan  Link encap:イーサネット  ハードウェアアドレス 00:ac:09:19:30:ae
          inet6アドレス: fe80::2ac:9ff:fe19:30ae/64 範囲:リンク
          UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
          RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
          TXパケット:49 エラー:0 損失:0 オーバラン:0 キャリア:0
      衝突(Collisions):0 TXキュー長:500
          RXバイト:0 (0.0 B)  TXバイト:3128 (3.0 KiB) 

eth0とtap_vlanがブリッジされていることを確認します。
※interfaceにeth0とtap_vlanが表示されていればOKです。

[root@ms03 ~]# brctl show br0
bridge name     bridge id               STP enabled     interfaces
br0             8000.00ac091930ae       no              eth0
                                                        tap_vlan


<注意事項>
networkingを再起動させると、tapデバイスのブリッジ設定は、消えてしまいます。
その時は、vpnserverを再起動させることで、tapデバイスのブリッジ設定は復活します。

[root@ms03 ~]# /etc/init.d/networking restart
[root@ms03 ~]# /etc/init.d/vpnserver restart

 

VPNサーバへのping動作

VPN接続中のクライアントPCから、SoftEther VPN をインストールしたサーバへpingを打ちます。

SE VPN Server tap 01 300x151 SoftEther VPN 1.0 RC2でtap

 

 サーバから正しく応答が返ることを確認します。

 

以上で、「SoftEther VPN 1.0 RC2でtapデバイスを試す」を終了します。

コメント

コメントを受け付けておりません。