カテゴリー
2022年 Raspberry Pi VPN おすすめ販売 ガジェット コンピューター

Raspberry Pi 4 でサイト間 VPN を作ってみよう

私が Raspberry Pi 4 を最初に購入したのは 4ヶ月ほど前なのですが、やたらと気に入ってしまい、とうとう 4台目を購入しちゃいました。2GBモデルを1台、4GBモデルを2台、8GBモデルを1台持ってます。

今回は、Raspberry Pi 4 で、Softether を動かし、会社に置いてある Windows 上の Softether と、インターネット越しのサイト間 VPN を張ってみました。その時のメモ書きです。

必要なもの

Raspberry Pi 4 本体

VPN を動かすだけなら、2BG のモデルでも動きますが、4GB のモデルの方が良いかと思います。値段も1000円程度しか変わりませんし。

4GBモデル

posted with カエレバ

初めて Raspberry Pi 4 を購入する人は、セットになったものを購入すると便利です。必要なものが全て (モニター以外) 付いてます。

電源アダプター

動かしっぱなしの人はいのですが、使い終わったら電源を消したい人は、このスィッチの付いたタイプがおすすめす。電源を入れる時に、ケーブルの抜き差しが不要になります。

Raspberry Pi 4 ケース

Raspberry Pi は、使っているとすぐに熱くなります。以前、Linux でサーバーを動かしてみたのですが、ちょっと使っていたら、すぐにシステム温度が 90 度くらいまで上がりました。

ファンが付いているカバーが一番おすすめです。私も最初はこれを購入しました。やっぱり、音は気になりますね。そばにいかなければ分からない程度ですけど。

なので、2台目からは、ファンなしのケースを購入しましたファンなしなら、これがおすすめです。現在、Raspberry Pi 4 は 4台所有していますが、3台にこれを使用しています。

触ると本体は多少熱くなってますが、システム温度はしっかり下げられています。

Raspberry Pi 用モニター

忘れてはいけないのがモニターです。Raspberry Pi には、モニターはありません。基盤剥き出しの本体のみです。

OS インストール直後しか使用せず、あとは RDP とか VNC などで接続しますが、最初は必要ですので忘れないように購入しましょう。私はこれを使ってます。

MicroSD カード

Linux でサーバーを動かすなら、16GB でも 32GB でも十分です。

あと、MicroSD のサイズが大きいほど、バックアップの時間が長くなります。これを考えると、なるべく MicroSD のサイズは小さいに越したことはありません。

MicroSD リーダー・ライター

Raspberry Pi では、OS を MicroSD に書き込んで、そこから起動させて使います。OS の書き込みの際に必要となりますので、持っていない場合は購入しておきましょう。

事前準備

MicroSD に OS イメージを書き込むのには、Raspberry Imager を使うのが便利です。これが圧倒的に速いです。

Raspberry Pi Imager を起動し、Raspberry Pi OS (Raspbian)を、MicroSD にインストールします。

「Operation System」 の中からRaspberry Pi OS は選択できます。Raspberry Pi Imager が、ダウンロードして書き込んでくれます。

OS の書き込みが完了したら、MicroSD カードをRaspberry Pi 4に差し込み、Raspberry Pi OS を起動させます。

Raspberry Pi OS のIPアドレスは、固定にした方が良いです。あと、WiFi も停止して、ケーブルでネットワークに接続させましょう。

VNC も有効にしておきます。これにより、リモートから画面アクセスが可能になりますので、設定がしやすいです。

VPN のインストール

Raspberry Pi OS のブラウザーを起動し、SoftEther のダウンロードページ(https://www.softether-download.com/en.aspx?product=softether)から、必要なコンポーネントをダウンロードをします。

以下のように選択します。

  • 「ダウンロードするソフトウェアを選択」で、SoftEther VPN (Freeware) を選択
  • 「コンポーネントを選択」で、SoftEther VPN Server を選択
  • 「プラットフォーム」で、Linux を選択
  • 「CPU を選択」で、ARM EABI (32bit) を選択

ダウンロードが完了したら、画面の上のメニューの左側にある「ターミナル」をクリックして起動します。

ここからは、コマンド操作になります。

ダウンロードしたファイルを指定して展開します。

tar xzvf softether-vpnserver-v4.34-9745-beta-2020.04.05-linux-arm_eabi-32bit.tar.gz

「vpnserver」というフォルダが作成されるのが見えます。

「vpnserver」ディレクトリに移動して、make コマンドを実行します。

$ cd vpnserver
$ make

make を実行すると、何度か質問されるので、全て 1(Yes) で回答していきます。

Do you want to read the License Agreement for this software ?
1. Yes
2. No
Please choose one of above number:
1

vpnserver のプログラムの生成が開始します。

「vpnserver」フォルダを丸ごと /usr/local/ ディレクトリにコピーします。

cd ..
sudo rsync -av vpnserver /usr/local

または、フォルダを丸ごと移動させてしまっても良いです。

$ sudo mv vpnserver /usr/local

/usr/local/のディレクトリに「vpnserver」フォルダをコピーまたは移動できたら、/usr/localに移動します。

cd /usr/local

chmodコマンドで、権限を書き換えて保護していきます。

まずは、vpnserverフォルダです。

sudo chmod 700 vpnserver

次に、に移動します。

cd vpnserver

以下のコマンドを実行します。

find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
chmod 700 vpncmd vpnserver

Raspberry Pi 4が起動した際に、SoftEther も自動で起動するようにします。

以下のvpnserver.serviceファイルを、新規で作成します。

sudo vim /usr/lib/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
KillMode=process
Restart=on-failure

[Install]
WantedBy=multi-user.target

/usr/local/vpnserver/vpnserver_startで、起動させる訳です。

なので今度は、/usr/local/vpnserver/ディレクトリーに、vpnserver_startファイルを作ります。

vim /usr/local/vpnserver/vpnserver_start

自動でtapデバイスの名前を選んできてブリッジに追加するスクリプトです。

#!/bin/bash
/usr/local/vpnserver/vpnserver start

tap=$(/sbin/ifconfig -a| awk '$1 ~ /^tap/ {print $1}')
/sbin/brctl addif br0 $tap

権限を変更します。

sudo chmod 755 /usr/local/vpnserver/vpnserver_start

これで、SofeEther 側の設定は完了です。

ブリッジのインストールと設定

bridge-utilsをインスト―ルします。

sudo apt-get install -y bridge-utils

ブリッジのipアドレスを設定。

/etc/dhcpcd.confに固定の内容を書いてはいけない。

sudo vim /etc/network/interfaces

自分の環境に合わせて、設定内容を記入していきます。

# loopback
auto lo
iface lo inet loopback

# Ethernet port
auto eth0
iface eth0 inet manual

# Bridge interface
auto br0
iface br0 inet static
address 172.16.xxx.yyy #固定のipアドレスを指定
netmask 255.255.255.0
network 172.16.xxx.0 #ネットワークのアドレスを指定
broadcast 172.16.xxx.255 #ブロードキャストアドレスを指定
gateway 172.16.xxx.yyy # ルータのアドレスを入れる
bridge_ports eth0

設定を適用させるために、一度リブートします。

sudo reboot
sudo /usr/local/vpnserver/vpnserver start

vpnserverの起動登録をします。

sudo systemctl enable vpnserver.service

これで、ブリッジのインストールと設定が完了です。

VPN Server Manager のインストール

ここからは、Raspberry Pi OS ではなく、Windows PC での作業となります。

自分のWindows PCに、VPN Server Manager をインストールします。

SoftEther のダウンロードページ(https://www.softether-download.com/en.aspx?product=softether)から、必要なコンポーネントをダウンロードをします。

以下のように選択します。

  • 「ダウンロードするソフトウェアを選択」で、SoftEther VPN (Freeware) を選択
  • 「コンポーネントを選択」で、SoftEther VPN Server Manager for Windows を選択
  • 「プラットフォーム」で、Windows を選択
  • 「CPU を選択」で、Intel (x86 and x64) を選択

VPN Server Manager の設定

まずは、VPN接続される側(自宅に置いてあるRaspberry Pi 4)の設定をしていきます。

なぜ、自宅のRaspberry Pi 4が接続される側かというと、インターネット越しにSSL VPNが向かってきます。このインターネットからの通信を、インターネットルーターで、Raspberry Pi 4に向ける必要があるからです。Inboud NATでも良いですし、Port Forwardingでも良いです。ただ、こういった設定は、会社のITで管理されている機器には設定ができません。そのため、自宅の方で行います。

Windows PC 上のVPN Server Manager から、Raspberry Pi OS 上のVPN Serverに接続して、VPN関連の設定をしていきます。

VPN Server の登録

以下のように設定していきます。

  • 接続設定名に、Raspberry Pi OS のIPアドレスを指定します。
  • ホスト名には、後から見て、これがどのVPN Serverなのか分かる名前を指定します。Raspberry Pi OS の名前でも良いと思います。
  • ポート番号は、443のままが良いでしょう。

設定が完了したら、OKを押して登録します。

  • 仮想HUBの名前を指定します。「どこへの接続」という感じの名前が分かりやすいと思います。
  • 仮想HUBの管理パスワードも設定します。

設定が完了したら、OKを押して保存します。

次に、「ローカルブリッジ設定」をクリックします。

  • 「新しいローカルブリッジの定義」の「仮想HUB」のプルダウンメニューから、先ほど作成した仮想HUBの名前を選択します。
  • 「LANカード」では、プルダウンメニューから「br0」を選択します。

設定が完了したら、閉じるをクリックして、設定を保存します。

「ダイナミックDNS設定」をクリックします。

ダイナミックDNS機能の設定画面の中の「ダイナミックDNSホストの変更」を設定していきます。

設定が完了したら、閉じるをクリックし、設定を保存します。

ユーザーを登録していきます。

「ユーザー管理」をクリックします。

「新規作成」をクリックし、ユーザーを作成します。

  • 「ユーザー名」で、ユーザー名を設定します。例えば、Tarouとかuser-01などです。
  • 「本名」で、上記ユーザーの本名を入力します。例えば、Tarou Yamada などです。
  • 「説明」はオプションが、後からこのユーザーがどのようなユーザーなのか分かるようにコメントを入れておきます。
  • 「パスワード認証」で、このユーザーがVPN接続する際に使用するパスワードを指定します。

設定が完了したら、OKをクリックし、設定を保存します。

これで、VPN接続される側の設定は完了です。

次に、VPN接続する側(オフィスのWindows のSoftEther)の設定を行います。

「仮想HUBの管理」をクリックします。

「カスケード接続の管理」をクリックします。

「新規作成」をクリックします。

関連する記事:

最近の記事:

カテゴリー
2022年 CCNP Enterprise Cisco VPN コマンド コンピューター トラブルシューティング ルーティング 技術一般 認定資格

Cisco ルーターで VPN (1) サイト間 IPSec VPN 接続


にほんブログ村

私の自宅では、インターネットルーターに Cisco ルーターを使用していますので、父親の家でも Cisco ルーターを使って、父親の家と私の自宅を IPSec VPN で接続してみようかなと考えました。

以前は、Buffalo ルーターを使って、父親の家と VPN 接続していたのですが、それが壊れてしまいました。これがきっかけです。

今回考えているのは、以下のような構成です。

単純にインターネット越しに 2つのサイトを VPN 接続するという構成です。

今回の動作確認で使用したのは、Cisco 1812J です。2台のルーターをバックトゥバックで接続しています。

サイト間 VPN の動作確認

自宅に 2台の Cisco ルーターを用意し、テスト構成を作成して、IPSec の設定を行いました。

テスト構成は、以下のアドレス体系としています。

以下のIPSecの設定は、暗号化マップを使った方式となります。

IPsec の設定

  1. まず、ISAKMP ポリシーを作成します。
  2. ここでは、「共通鍵を使用しますよ」と宣言を行います。
  3. 次に、IPSec 接続の際に使用するキーを指定し、そして、そのキーを使用して IPSec 接続する対向先のルーターの IPアドレスを指定します。
crypto isakmp policy 10 <<< 1
 hash md5
 authentication pre-share <<< 2
 crypto isakmp key vpnuser address 10.0.0.253 <<< 3

10.0.0.253 が R2 の Fast Ethernet の IPアドレスです。これは、インターネット越しで到達可能な IPアドレスである必要があります。

つまり、「このインターフェースとの IPSec 接続には、このキーを使用しましょう」ということです。

次に、Transform セットを作成します。

ここでは、IPSec 接続の際に使用する暗号化の方式を定義します。

crypto ipsec transform-set myset esp-des esp-md5-hmac 

ここで使用している「myset」が、このTransform セットの名前になります。

使用する暗号化方式は、「esp-des esp-md5-hmac 」です。

次に、Cryptoマップ(暗号化マップ)を作成します。

このマップ内では、

  1. どの IPアドレスが IPSec の接続先なのか
  2. どの通信を IPSec トンネルの対象にするのか(トンネルの中に通すのか)
  3. 使用する Transform セットの名前

を定義します。

crypto map mymap 10 ipsec-isakmp 
 set peer 10.0.0.253 <<< 1
 set transform-set myset <<< 2
 match address 100 <<< 3
  • この Crypto マップの名前は「mymap」としています。
  • set peer で指定しているのが、IPSec の張り先となるIPアドレスです。
  • このマップを使用する時には、「myset」という Transform セットを使いなさいとします。
  • match address でしてしている番号が、ACL の番号となります。この ACL で IPSec トンネルの中に入れる対象となるトラフィックはどれなのかを定義します。

最後に、ACL を作成します。

2台のルーターの、それぞれの LAN 側のセグメントを指定します。

access-list 100 permit ip 172.16.16.0 0.0.7.255 172.16.24.0 0.0.0.127

「R1 の LAN 側(172.16.16.0 /21) から、R2 の LAN 側(172.16.24.0 /25) へ向かうトラフィックを IPSec トンネルの中に入れますよ」ということです。

これで、IPSec の基本設定は完了です。

IPSec のCrypto マップを適用

仕上げとして、作成した Crypto マップを、対象となるインターフェースに適用しましょう。

適用するインターフェースは、WAN 側(インターネット側)に面しているインターフェースです。つまり、対向側ルーターが IPSec トンネルを張ってくる宛先となるインターフェースです。

先ほど作成した Crypto マップは「mymap」でしたね。

crypto map コマンドで、そのマップの名前を指定して、インターフェースに適用します。

interface FastEthernet0
 ip address 10.0.0.254 255.255.255.0
 duplex auto
 speed auto
 crypto map mymap

私が Crypto マップを適用しているのは、Fast Ethernet 0 インターフェースになります。

そうそう、このルーターはインターネットルーターですので、デフォルトルートは Fast Ethernet 0 (インターネットに面しているインターフェース)に向けておきましょう。

これを忘れると、インターネット向けの通信ができません。

ip route 0.0.0.0 0.0.0.0 FastEthernet0

これで、IPSec の設定適用は完了です。

これと同じことを、R2 側でも行います。IPSec トンネルの接続先が R1 になる点だけが異なります。

以下、IPSec 接続に必要な部分の設定のみを抜粋しています。

crypto isakmp policy 10
 hash md5
 authentication pre-share
crypto isakmp key vpnuser address 10.0.0.254
!
!
crypto ipsec transform-set myset esp-des esp-md5-hmac 
!
crypto map mymap 10 ipsec-isakmp 
 set peer 10.0.0.254
 set transform-set myset 
 match address 100
!
!
interface BRI0
 no ip address
 encapsulation hdlc
 shutdown
 !
!
interface FastEthernet0
 ip address 10.0.0.253 255.255.255.0
 duplex auto
 speed auto
 crypto map mymap
 !
!
ip route 0.0.0.0 0.0.0.0 FastEthernet0
!
access-list 100 permit ip 172.16.24.0 0.0.0.127 172.16.16.0 0.0.7.255

IPSec の接続確認コマンド

実際に通信をして確認をしてみます。

  • show crypto isakmp sa
R1#sh crypto isakmp sa 
IPv4 Crypto ISAKMP SA
dst             src             state          conn-id status
10.0.0.253       10.0.0.254       QM_IDLE           2001 ACTIVE

ステータスが「QM_IDLE」になっていれば、ISAKMP 接続は完了です。

「QM_IDLE」以外のステータスの場合、このページが参考になります。

  • show crypto ipsec sa
C1812-test#sh crypto ipsec sa 

interface: FastEthernet0
    Crypto map tag: M-ipsec, local addr 10.0.0.254

   protected vrf: (none)
   local  ident (addr/mask/prot/port): (0.0.0.0/255.255.255.255/47/0)
   remote ident (addr/mask/prot/port): (0.0.0.0/255.255.255.255/47/0)
   current_peer 10.0.0.253 port 500
     PERMIT, flags={origin_is_acl,}
    #pkts encaps: 97, #pkts encrypt: 97, #pkts digest: 97
    #pkts decaps: 94, #pkts decrypt: 94, #pkts verify: 94
    #pkts compressed: 0, #pkts decompressed: 0
    #pkts not compressed: 0, #pkts compr. failed: 0
    #pkts not decompressed: 0, #pkts decompress failed: 0
    #send errors 134, #recv errors 0

     local crypto endpt.: 10.0.0.254, remote crypto endpt.: 10.0.0.253
     path mtu 1500, ip mtu 1500, ip mtu idb FastEthernet0
     current outbound spi: 0xD8FB69D5(3640355285)
     PFS (Y/N): N, DH group: none

     inbound esp sas:
      spi: 0xD6CE8456(3603858518)
        transform: esp-3des esp-md5-hmac ,
        in use settings ={Tunnel, }
        conn id: 1, flow_id: Onboard VPN:1, sibling_flags 80000046, crypto map: M-ipsec
        sa timing: remaining key lifetime (k/sec): (4420763/2793)
        IV size: 8 bytes
        replay detection support: Y
        Status: ACTIVE

     inbound ah sas:

     inbound pcp sas:

     outbound esp sas:
      spi: 0xD8FB69D5(3640355285)
        transform: esp-3des esp-md5-hmac ,
        in use settings ={Tunnel, }
        conn id: 2, flow_id: Onboard VPN:2, sibling_flags 80000046, crypto map: M-ipsec
        sa timing: remaining key lifetime (k/sec): (4420762/2793)
        IV size: 8 bytes
        replay detection support: Y
        Status: ACTIVE

     outbound ah sas:

     outbound pcp sas:

カウンターの数値が上がっていれば、IPSec トンネルの中に通信が通過しています。

うまく接続できない時は、デバッグコマンドが役に立ちます。

  • debug crypto isakmp 
  • debug crypto ipsec

設定内容

R1

R1#sh run 
Building configuration...

Current configuration : 1842 bytes
!
! Last configuration change at 06:21:16 UTC Tue Feb 23 2021
!
version 15.0
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R1
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
!
!
!
!
!
dot11 syslog
ip source-route
!
!
!
!
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
!
!
!
license udi pid CISCO1812-J/K9 sn xxxxxxx
!
!
! 
!
crypto isakmp policy 10
 hash md5
 authentication pre-share
crypto isakmp key vpnuser address 10.0.0.253
!
!
crypto ipsec transform-set myset esp-des esp-md5-hmac 
!
crypto map mymap 10 ipsec-isakmp 
 set peer 10.0.0.253
 set transform-set myset 
 match address 100
!
!
!
!
!
interface BRI0
 no ip address
 encapsulation hdlc
 shutdown
 !
!
interface FastEthernet0
 ip address 10.0.0.254 255.255.255.0
 duplex auto
 speed auto
 crypto map mymap
 !
!
interface FastEthernet1
 no ip address
 duplex auto
 speed auto
 !
!
interface FastEthernet2
 switchport access vlan 100
 !
!
interface FastEthernet3
 switchport access vlan 100
 !
!
interface FastEthernet4
 switchport access vlan 100
 !
!
interface FastEthernet5
 switchport access vlan 100
 !
!
interface FastEthernet6
 switchport access vlan 100
 !
!
interface FastEthernet7
 switchport access vlan 100
 !
!
interface FastEthernet8
 switchport access vlan 100
 !
!
interface FastEthernet9
 switchport access vlan 100
 !
!
interface Vlan1
 no ip address
 !
!
interface Vlan100
 ip address 172.16.23.254 255.255.248.0
 !
!
router ospf 1
 log-adjacency-changes
 network 172.16.16.0 0.0.7.255 area 0
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
ip route 0.0.0.0 0.0.0.0 FastEthernet0
!
access-list 100 permit ip 172.16.16.0 0.0.7.255 172.16.24.0 0.0.0.127
!
!
!
!
!
!
control-plane
 !
!
!
line con 0
line aux 0
line vty 0 4
 login
!
end

R2

R2#sh run 
Building configuration...

Current configuration : 1980 bytes
!
! Last configuration change at 06:07:15 UTC Sun Feb 13 2022
!
version 15.0
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname R2
!
boot-start-marker
boot-end-marker
!
!
no aaa new-model
!
!
!
memory-size iomem 25
!
!
dot11 syslog
ip source-route
!
!
!
!
ip cef
no ipv6 cef
!
multilink bundle-name authenticated
!
!
!
license udi pid CISCO1812-J/K9 sn xxxxxxx
!
!
vlan 100
 name home-data
!
vlan 111
 name MGMT
!
vlan 200
 name PBR-test
!
! 
!
crypto isakmp policy 10
 hash md5
 authentication pre-share
crypto isakmp key vpnuser address 10.0.0.254
!
!
crypto ipsec transform-set myset esp-des esp-md5-hmac 
!
crypto map mymap 10 ipsec-isakmp 
 set peer 10.0.0.254
 set transform-set myset 
 match address 100
!
!
!
!
!
interface BRI0
 no ip address
 encapsulation hdlc
 shutdown
 !
!
interface FastEthernet0
 ip address 10.0.0.253 255.255.255.0
 duplex auto
 speed auto
 crypto map mymap
 !
!
interface FastEthernet1
 no ip address
 duplex auto
 speed auto
 !
!
interface FastEthernet2
 switchport access vlan 100
 !
!
interface FastEthernet3
 switchport access vlan 100
 !
!
interface FastEthernet4
 switchport access vlan 100
 !
!
interface FastEthernet5
 switchport access vlan 100
 !
!
interface FastEthernet6
 switchport access vlan 100
 !
!
interface FastEthernet7
 switchport access vlan 100
 !
!
interface FastEthernet8
 switchport access vlan 100
 !
!
interface FastEthernet9
 switchport access vlan 100
 !
!
interface Vlan1
 no ip address
 !
!
interface Vlan100
 ip address 172.16.24.126 255.255.255.128
 !
!
router ospf 1
 log-adjacency-changes
 network 172.16.24.0 0.0.0.127 area 0
!
ip forward-protocol nd
no ip http server
no ip http secure-server
!
!
ip route 0.0.0.0 0.0.0.0 FastEthernet0
!
access-list 100 permit ip 172.16.24.0 0.0.0.127 172.16.16.0 0.0.7.255
!
!
!
!
!
!
control-plane
 !
!
!
line con 0
line aux 0
line vty 0 4
 login
!
end

おもしろかったら、フォローしてください!

関連する記事

最近の記事: