我が家はマンション専用プロバイダと契約していることもあり、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でログインする。
- 以降はVyOSの基本設定(Firewall等のセキュリティは省略)
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について書きます。