OSS

【図解/Ubuntu22.04】Softetherで拠点間L3接続 on VirtualBOX

やりたいこと

Ubuntu 22.04LTS Server を VirtualBOX 上に 2 台用意し、Softether VPN で拠点間 L3 接続する。

Linux で Softether を使う場合、ローカルブリッジ設定で指定したインタフェースの IP には対向拠点からはアクセスできなくなってしまう。そうなると Softether を動かしているサーバはその IP でサービスを待ち受けても使えなくなってしまう。

そこで今回は bridge インタフェースと tap インタフェースを作り、tap インタフェースをローカルブリッジに指定することで、この問題を回避した。ブリッジインタフェース br0 を作り、IP を持たせ、ルーティング設定もしている。

構成図は以下の通り。

図の右側にある通り、10.2.2.2 から 198.51.100.1 への https 接続を VyOS で NAT し、10.1.1.1 へ到達性を持たせている。(今回の目的は 10.1.1.0/24 と 10.2.2.0/24 を Softether で接続するので互いの IP を隠蔽する目的で NAT をかませている。VM-2 から見ると VM-1 の IP は 198.51.100.1 となっており、VyOS + NAT でインターネットをシミュレーションしている。)

この右側の https 接続により左側の Softether 管理下の各種機能が動作し、10.1.1.0/24 と 10.2.2.0/24 が L3 接続できるようになる。

VyOS の展開と設定

以下手順を参照に構築する。

【VyOS】の基本設定,初期設定, Oracle VM での検証環境設定
VyOS (読み方:ヴィワイオーエス)とは VMware や KVM 等の仮想...

アダプター 1 は「内部ネットワーク」の [LAN1] に設定する。

同様にアダプター 2 は「内部ネットワーク」の [LAN2] に設定する。

アダプター 3 は「NAT」とし、ポートフォーワードの設定をする。

config は以下を投入する。

vyos@vyos# set interfaces ethernet eth0 address '10.1.1.254/24'
vyos@vyos# set interfaces ethernet eth1 address '10.2.2.254/24'

vyos@vyos# set nat destination rule 1 destination address '198.51.100.1'
vyos@vyos# set nat destination rule 1 translation address '10.1.1.1'
vyos@vyos# set nat destination rule 1 inbound-interface 'eth1'
vyos@vyos# set nat source rule 1 source address '10.2.2.2'
vyos@vyos# set nat source rule 1 translation address '10.1.1.254'
vyos@vyos# set nat source rule 1 outbound-interface 'eth0'

Ubuntu の展開と VirtualBOX の設定

VirtualBOX 上に Ubuntu 22.04 LTS Server をインストールする。

VirtualBOX の「ネットワーク」において先ほどの VyOS と合うように VM-1 のアダプター 1 は「内部ネットワーク」の [LAN1] に、VM-2 のアダプター 1 は「内部ネットワーク」の [LAN2] に設定する。

アダプター 2 の設定は不要である。

アダプター 3 は NAT + ポートフォワードの設定をする。VM については ssh だけでなく https のポートフォワードの設定も行う。なお、以下は VM-1 の例だが、VM-2 の場合はホスト IP を 127.0.0.12 にする。

VM-1, VM-2 の共通設定

sudo su - で root ユーザーになり、ホスト名の設定と enp0s9 の設定をし、ssh 接続する。

ホスト名の設定

root@localhost:~# hostnamectl set-hostname VM-1 # もしくは VM-2

enp0s9 の dhcp 起動

root@localhost:~# netplan set ethernets.enp0s9.dhcp4=true
root@localhost:~# netplan apply

これで ssh 接続できるようになる。なお、VirtualBOX 側で設定したポートフォワーディングの通り、Teraterm 等から 127.0.0.11 の 10022/tcp で接続する。(VM-2 の場合は 127.0.0.12 の 10022/tcp)

パッケージインストール

今回利用するパッケージをインストールする。

root@localhost:~# apt -y install vim iputils-ping gcc make

VM-1 の個別設定

netplan (ネットワーク) の設定

先ほど enp0s9 だけは起動したが、他のネットワーク設定を行う。

まず、00-installer-config.yaml が読み込まれないように .disabled を付ける。

root@VM-1:~# mv /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.disabled

99-netcfg.yaml を新規作成する。

root@VM-1:~# vi /etc/netplan/99-netcfg.yaml
network:
  bridges:
    br0:
      interfaces: 
        - enp0s3
      addresses: [10.1.1.1/24]
      routes:
        - to: 10.2.2.0/24
          via: 10.1.1.250
      nameservers:
        addresses: [1.1.1.1,8.8.8.8]
        search: []
      parameters:
        forward-delay: 0
        stp: no
      optional: true
  ethernets:
    enp0s3:
      dhcp4: false
  version: 2

設定を反映する。

root@VM-1:~# netplan apply

ここで問題が発生する。ping 10.1.1.254 への疎通ができない。これについては以下に記載の通り、

[Ubuntu 22.04 LTS] ブリッジ接続がうまく動作しない
症状 Ubuntu 22.04 LTS Server on VirtualBO...
root@VM-1:~# vi /usr/lib/systemd/network/99-default.link

MACAddressPolicy=persistent を none に変更。

[Link]
NamePolicy=keep kernel database onboard slot path
AlternativeNamesPolicy=database onboard slot path
MACAddressPolicy=none

br0 を作り直す。

root@localhost:~# networkctl delete br0
root@localhost:~# netplan apply

これで ping 10.1.1.254 で疎通が取れるようになる。

VM-2 の個別設定

MACAddressPolicy の変更

先ほどの通り vi /usr/lib/systemd/network/99-default.link にて MACAddressPolicy=none を設定する。

netplan (ネットワーク) の設定

まず、00-installer-config.yaml が読み込まれないように .disabled を付ける。

root@VM-2:~# mv /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.disabled

99-netcfg.yaml を新規作成する。

root@VM-2:~# vi /etc/netplan/99-netcfg.yaml
network:
  bridges:
    br0:
      interfaces: 
        - enp0s3
      addresses: [10.2.2.2/24]
      routes:
        - to: 10.1.1.0/24
          via: 10.2.2.250
        - to: 198.51.100.0/24
          via: 10.2.2.254
      nameservers:
        addresses: [1.1.1.1,8.8.8.8]
        search: []
      parameters:
        forward-delay: 0
        stp: no
      optional: true
  ethernets:
    enp0s3:
      dhcp4: false
  version: 2

設定を反映する。

root@VM-1:~# netplan apply

ping 10.2.2.254 が疎通することを確認する。

VM-1 への Softether VPN Server のインストール

v4.38 をダウンロードし、解凍する。

root@VM-1:~# curl -OL https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz

root@VM-1:~# tar xzvf softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz

vpnserver を make して move して chmod する。

root@VM-1:~# cd vpnserver
root@VM-1:~/vpnserver# make
root@VM-1:~/vpnserver# cd ..
root@VM-1:~# mv vpnserver /usr/local
root@VM-1:~# cd /usr/local/vpnserver
root@VM-1:/usr/local/vpnserver# chmod 600 *
root@VM-1:/usr/local/vpnserver# chmod 700 vpncmd vpnserver

動作確認する。

root@VM-1:vpnserver# ./vpncmd
 Select 1, 2 or 3: 3
VPN Tools> check
VPN Tools> exit

check の後に以下が表示されれば OK。

All checks passed. It is most likely that SoftEther VPN Server / Bridge can operate normally on this system.
The command completed successfully.

OS 起動時にサービスが自動起動するように、systemd に登録してサービス化する。

root@VM-1:~# vi /etc/systemd/system/softether-server.service
[Unit]
Description=Softether VPN Server Service
After=network.target

[Service]
Type=forking
User=root
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop
Restart=on-abort
WorkingDirectory=/usr/local/vpnserver/

[Install]
WantedBy=multi-user.target

サービスを起動および自動起動有効化する。

root@VM-1:~# systemctl daemon-reload
root@VM-1:~# systemctl enable --now softether-server

サービスの起動状態を確認する。

root@VM-1:~# systemctl status softether-server

VM-2 への Softether VPN Bridge のインストール

Softether VPN Server と同じバージョンの Softether VPN Bridge をダウンロードし、解凍する。

root@VM-2:~# curl -OL https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-vpnbridge-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz

root@VM-2:~# tar xzvf softether-vpnbridge-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz

vpnbridge を make して move して chmod する。

root@VM-2:~# cd vpnbridge
root@VM-2:~/vpnbridge# make
root@VM-2:~/vpnbridge# cd ..
root@VM-2:~# mv vpnbridge /usr/local
root@VM-2:~# cd /usr/local/vpnbridge
root@VM-2:/usr/local/vpnbridge# chmod 600 *
root@VM-2:/usr/local/vpnbridge# chmod 700 vpncmd vpnbridge

動作確認する。

root@VM-2:~# ./vpncmd
 Select 1, 2 or 3: 3
VPN Tools> check
VPN Tools> exit

OS 起動時にサービスが自動起動するように、systemd に登録してサービス化する。

root@VM-2:~# vi /etc/systemd/system/softether-bridge.service
[Unit]
Description=Softether VPN Bridge Service
After=network.target

[Service]
Type=forking
User=root
ExecStart=/usr/local/vpnbridge/vpnbridge start
ExecStop=/usr/local/vpnbridge/vpnbridge stop
Restart=on-abort
WorkingDirectory=/usr/local/vpnbridge/

[Install]
WantedBy=multi-user.target

サービスを起動および自動起動有効化する。

root@VM-2:~# systemctl daemon-reload
root@VM-2:~# systemctl enable --now softether-bridge

サービスの起動状態を確認する。

root@VM-2:~# systemctl status softether-bridge

Softether VPN Server Manager for Windows のダウンロード&インストール

VPN Server と Bridge の細かい設定は Manager ソフトにて GUI で設定できる。

VirtualBOX を動かしているホスト OS にて、以下サイトからインストーラをダウンロードする。

SoftEther ダウンロード センター

以下のスライドの手順でインストールする。

softehter-manager-install-01
softehter-manager-install-02
softehter-manager-install-03
softehter-manager-install-04
softehter-manager-install-05
softehter-manager-install-06
softehter-manager-install-07
previous arrow
next arrow
softehter-manager-install-01
softehter-manager-install-02
softehter-manager-install-03
softehter-manager-install-04
softehter-manager-install-05
softehter-manager-install-06
softehter-manager-install-07
previous arrow
next arrow

プログラムを起動し、Softether VPN Server と VPN Bridge の設定を GUI にて行っていく。

VPN Server の設定

まずは VPN Server への接続設定をする。通常はホスト名はVM-1 の IP, ポート番号は 443 を設定するのだが、今回の例では前述の通り、VM-1 の NAT インタフェースのポートフォワード設定で 127.0.0.21:10443 の通信をゲスト OS の IP の 443/tcp へ変換しているので、この場合は以下のように設定する。

接続ボタンを押すと管理者の初期パスワード設定を求められるため、設定する。その後は以下のスライドに従って設定する。

softether-L3-setup-01
softether-L3-setup-02
softether-L3-setup-03
softether-L3-setup-04
softether-L3-setup-05
softether-L3-setup-06
softether-L3-setup-07
softether-L3-setup-08
softether-L3-setup-09
softether-L3-setup-10
softether-L3-setup-11
softether-L3-setup-12
softether-L3-setup-13
softether-L3-setup-14
softether-L3-setup-15
softether-L3-setup-16
softether-L3-setup-17
softether-L3-setup-18
softether-L3-setup-19
softether-L3-setup-20
softether-L3-setup-21
softether-L3-setup-22
softether-L3-setup-23
previous arrow
next arrow
softether-L3-setup-01
softether-L3-setup-02
softether-L3-setup-03
softether-L3-setup-04
softether-L3-setup-05
softether-L3-setup-06
softether-L3-setup-07
softether-L3-setup-08
softether-L3-setup-09
softether-L3-setup-10
softether-L3-setup-11
softether-L3-setup-12
softether-L3-setup-13
softether-L3-setup-14
softether-L3-setup-15
softether-L3-setup-16
softether-L3-setup-17
softether-L3-setup-18
softether-L3-setup-19
softether-L3-setup-20
softether-L3-setup-21
softether-L3-setup-22
softether-L3-setup-23
previous arrow
next arrow

VPN Bridge の設定

サーバー管理マネージャーで同様に VPN Bridge に接続する。

同様に管理者パスワードの初期設定を求められるので設定する。以降は以下のスライドに従って設定する。

softether-bridge-setup-01
softether-bridge-setup-02
softether-bridge-setup-03
softether-bridge-setup-04
softether-bridge-setup-05
softether-bridge-setup-06
softether-bridge-setup-07
softether-bridge-setup-08
previous arrow
next arrow
softether-bridge-setup-01
softether-bridge-setup-02
softether-bridge-setup-03
softether-bridge-setup-04
softether-bridge-setup-05
softether-bridge-setup-06
softether-bridge-setup-07
softether-bridge-setup-08
previous arrow
next arrow

VM-1 と VM-2 のそれぞれで、br0 と tap_0 をリンク

VM-1 と VM-2 の両方で、以下コマンドにて br0 と tap_0 を L2 接続させる。

# ip link set dev tap_0 master br0

これで完成である。VM-1 で ping 10.1.1.1 、VM-2 で ping 10.2.2.2 を打って疎通確認をする。

不要な設定を削除する

デフォルトで解放している「992/tcp, 1194/tcp, 5555/tcp」は不要なので削除する。これは VPN Server 側も VPN Bridge 側もである。(firewalld で 443/tcp のみになっているので不要とも思えるかもしれないが、多層防御の考え方としては重要である。)

また、デフォルトでは UDP による高速接続も設定されているが、今回は 443/tcp のみで通信しているため、これは設定を止めておく。

「仮想 HUB の管理(A)」⇒「カスケード接続の管理(C)」にて「BRIDGE 上のカスケード接続」Window を表示し、対象の接続設定名をクリックした状態で「編集(E)」をクリックし、「高度な通信設定(N)」をクリックすると以下が表示されるので、「UDP 高速化機能を無効にする」にチェックを入れる。

設定を反映するため、「オフライン(F)」⇒「オンライン(N)」をクリックする。

ちなみに上図にある通り、ここで TCP コネクションの数も設定できる。デフォルトでは 8 本となっている。

以上。

コメント

タイトルとURLをコピーしました