VyOSでプライベートIPの自宅ネットワークにリモートアクセスしたい!(環境構築編)


我が家はマンション専用プロバイダと契約していることもあり、DHCPでプライベートIPアドレス(10.XXX.YYY.ZZZ/22)がマンション側で管理している機器から振ってくる。そのため、外部から自宅にリモートアクセスするには別のグローバルIPがもらえるプロバイダとの契約しかないと思っていた。
しかし、その打開策を考えたので今回はそのネットワーク環境を構築していく。

ネットワーク図


簡単な説明としては、さくらクラウドにVyOS(グローバルIP付き)を一台立てて、それと自宅のVyOSをVPN(OpenVPN)で接続する。また、外部から接続する場合は、さくらクラウドのVyOSにVPN(L2TP over IPsec)で接続する。これによって、リモートでのSSHアクセス等が可能になる。
その構築を「環境構築編」,「OpenVPN編」,「L2TP over IPsec編」と3つの記事で説明する。

環境構築編

本記事では、さくらクラウド及び自宅のVyOSの環境構築について説明する。中級者向けでサクサク書きます。

さくらクラウドのVyOS

※アカウント等を持っていない方は登録の上、利用をお願いします。
以下のようにVyOSの環境構築をしていく。

サーバ追加

サーバプラン:1GB / 1仮想コア
ディスクプラン:20GB SSDプラン
パスワード等は任意

最後に[作成]ボタンを押す!

VyOS設定

eth0やdefault gateway等の設定は初期では入っているので、それを確認(show configuration)した上で以下のコマンドを入力。
VyOSユーザガイドを参考すると良いです。

※ さくらクラウドのwebコンソールを使って、set service ssh port 22だけ設定し、他はPCでSSH接続で作業した方が早いです。

# 設定モードに入る
configure

# eth0にNATの設定を行う
set nat source rule 100 outbound-interface eth0
set nat source rule 100 translation address masquerade

# リモート管理用にSSHを有効にする
set service ssh port 22

# タイムゾーンの設定
set system time-zone Asia/Tokyo

# 変更のコミットおよび設定保存
commit
save

設定後、念のため外部との接続性を確認

$ ping example.com

自宅のVyOS

自宅のVyOSを用意するために、今回はマンションのネットワークに繋がった汎用サーバ(Ubuntu16.04)上にKVMでVyOSを作成する。作成したVyOSはbridge接続を利用して自宅のルータとして動作させる。

KVMの環境構築

  • 必要パッケージのインストール
$ sudo apt-get install qemu-kvm libvirt-bin virtinst
  • Network Managerの無効化
    Network Managerはbridgeに対応していないため無効化する。
$ sudo systemctl stop NetworkManager.service
$ sudo systemctl disable NetworkManager.service
  • virbrの無効化
    KVMにVMを立てるとvirbr接続になるが、今回はbridge接続なので無効化する。
$ sudo virsh net-destroy default
$ sudo virsh net-autostart default --disable

ここらで一旦再起動。。。。

  • /etc/network/interfacesの編集
    自身の環境に応じてネットワークのaddress等の設定をする。 以下、/etc/network/interfacesの例
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
up /sbin/ifconfig eth0 promisc up

auto eth1
iface eth1 inet manual
up /sbin/ifconfig eth1 promisc up

auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_maxwait 1

auto br1
iface br1 inet static
address 192.168.10.2
network 192.168.10.0
netmask 255.255.255.0
broadcast 192.168.10.255
gateway 192.168.10.1
bridge_ports eth1
bridge_stp off
bridge_maxwait 1

networkingの再起動

$ sudo systemctl restart networking.service

VyOS仮想マシンをKVM上に構築

vyos.ioからVyOSのイメージをダウンロードする。また、作成場所は任意だが今回は/kvmディレクトリに作る。

$ mkdir /kvm
$ cd /kvm
$ wget http://packages.vyos.net/iso/release/1.1.7/vyos-1.1.7-i586.iso
$ chmod 644 vyos-1.1.7-i586.iso
  • vyos用の仮想ディスクファイルをストレージ2GBとして作成
$ qemu-img create -f qcow2 /var/lib/libvirt/images/vyos.qcow2 2G
  • イメージを利用して仮想マシンを起動していく
    (メモリ512MB,CPUコア数1,bridge1・2接続の指定)
$ virt-install \
  --name=vyos \
  --disk path=/var/lib/libvirt/images/vyos.qcow2 \
  --vcpus=1 \
  --ram=512 \
  --cdrom=/kvm/vyos-1.1.7-i586.iso \
  --network bridge=br0 \
  --network bridge=br1 \
  --os-type=linux \
  --os-variant=debiansqueeze
  • 起動後はユーザー名:vyos、パスワード:vyosでログインし、対話インストールを行い、一旦シャットダウンする。
$ intall system
---対話モードによるインストール---
$ power off

VyOS基本設定

KVM上のVyOSの設定を行っていく。

  • KVMのVyOS仮想マシンを起動して、コンソールログイン
$ virsh
$ list --all
$ start vyos
$ console [vyos仮想マシンのID(list --allで一番左に出る数字)]

ユーザー名:vyos、パスワード:vyosでログインする。

# 設定モードに入る
configure

# ホスト名を任意で設定
set system host-name vyos

#WAN側のIPアドレスの設定(今回はdhcp)
set interface ethernet eth0 address dhcp

#LAN側のIPアドレスの設定(外部からアクセスしたいネットワーク用)
set interface ethernet eth1 address 192.168.10.1/24

# eth0にNATの設定を行う
set nat source rule 100 outbound-interface eth0
set nat source rule 100 translation address masquerade

# リモート管理用にSSHを有効にする
set service ssh port 22

# タイムゾーンの設定
set system time-zone Asia/Tokyo

# 変更のコミットおよび設定保存
commit
save
  • 接続性を確認
--マンションGWルータへのping--
$ ping 10.xxx.yyy.1

--リモートでアクセスしたい機器へのping--
$ ping 192.168.10.xxx

--(重要)さくらクラウドのVyOSのグローバルIPにもpingで確認--
$ ping [さくらクラウドのVyOSのグローバルIP]

今回はここまで。次回は自宅VyOSとさくらクラウドVyOS間のOpenVPNについて書きます。