nesosukeの日記

メモするやつ

メモ: VPNで外出先から自宅ピシにつながるようにした

これはなに

OpenVPNでVPN鯖を立てる | nesotech の焼き直し,推敲版,異世界転生,などなど.
要するに自分用の手順書.

VirtualBoxUbuntuVMを立てた

前はデュアルブートでやっていたのだけど,ピシゲームがWindowsでしかできない以上,無理があったので一ヶ月もしないうちにデュアルブートは潰した.
窓を使っている間はサーバー部分は使えないし,サーバー部分を生かそうとすると今度は窓が使えず,Apex Legendsができない,というジレンマがあった.
WSLなんてなかった. 1

VMでもネットワークのやつをブリッジ接続にすれば,ルーターからVMsshが通るということを知ったので,「だったらVM立てれば,やりたいことは満たせるじゃん」という経緯.
VM立てたらホストOSにぶら下がる形のネット接続しか使ったことない程度には,VMよく知らなかった.)

GNU/Linuxを使うとき,鯖とかCLI環境のときはDebianGUIを使うときはLinux Mintをなんとなく使っているのだけど,どうせVMはヘッドレス起動しかしてないからDebianでも良かったなあと,と思っている.)

やりたいこと

OpenVPNを使って外出先からでも軽率に自宅にssh叩きたい

※とくに,弊ハウスは✨無料インターネット完備物件✨2なので,mydnsとかでDDNSをやってもpingsshその他が自室まで到達できず,軽率に宅鯖を使えないという問題がある.

環境

鯖: Debian 9.8 @ConoHa VPS(1GB)
クライアント: iOS12 / Android8 / Windows10 / Ubuntu18.04 (今のところ)

手順

鯖側

下準備

sudo apt install openvpn
git clone https://github.com/openvpn/easy-rsa 

apt install easy-rsaで入れるやり方もあるらしいんだけど,git cloneでやる方が慣れているのでなんとなく.

cd easy-rsa/easyrsa3   
./easyrsa init-pki  
./easyrsa build-ca  
./easyrsa build-server-full server nopass  
./easyrsa gen-dh
./easyrsa gen-crl
sudo cp pki/ca.crt \ 
        pki/dh.pem \
        pki/crl.pem \ 
        pki/issued/server.crt \ 
        pki/private/server.key  /etc/openvpn/
sudo chmod o+r /etc/openvpn/crl.pem  
sudo apt install ufw
sudo ufw enable 
sudo ufw allow 1194/udp  <-- もしくは 443/tcp

サーバー側設定ファイル(/etc/openvpn/server.conf)

サンプル

port   1194
proto  udp
dev    tun

ca          ca.crt
cert        server.crt
key         server.key
dh          dh.pem
crl-verify  crl.pem

ifconfig-pool-persist ipp.txt  <-- デバイスごとにIPアドレスを固定しておける

server 10.8.0.0 255.255.255.0

push "redirect-gateway def1 bypass-dhcp"
push "route 10.8.0.0 255.255.255.0"
push "dhcp-option DNS 8.8.8.8"

client-to-client
keepalive 10 120
comp-lzo

user  nobody
group nogroup

persist-key
persist-tun

status      /var/log/openvpn-status.log
log         /var/log/openvpn.log
log-append  /var/log/openvpn.log

verb 3  

なんかよしなにする

  • /etc/default/ufwDEFAULT_FORWARD_POLICYDROPからACCEPTに変える
  • /etc/ufw/sysctl.confnet/ipv4/ip_forward=1コメントアウトを外す
  • `/etc/ufw/before.rules{ の末尾に以下を追記
COMMIT

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT  

クライアント用の鍵を作っておく

./easyrsa build-client-full [デバイス名]で作れる.
./easyrsa build-client-full [デバイス名] nopass とすればパスフレーズなしの鍵も作れる(非推奨).
easy-rsa/easyrsa3/pki/以下にissued/デバイス名.crtprivate/デバイス名.keyができてるので,必要に応じてscpとかでクライアントに落としておく.
iOSでやる場合はクライアント側設定ファイルに直接コピペするのでなくてもよい.

sudo ufw reload  
sudo systemctl disable openvpn
sudo systemctl enable openvpn@server 
sudo systemctl start openvpn@server 

これで下準備は終わり.

クライアンヨ側の設定

※それぞれでクライアントの設定の仕方が違うので章分けしておく.

共通: クライアント設定ファイルの作成

👇example.comに1194/udpでTUNを使う場合のclient.confテンプレ.example.com 1194とか proto udpとかは適宜書き換える.

client

dev tun 
proto udp
remote example.com 1194

resolv-retry infinite
nobind 

user nobody
group nobody


comp-lzo
verb 3

ca ca.crt
cert hoge.crt  
key hoge.key  

iOSとか用に鍵情報を直接書き込む場合はca ca.crtの代わりに,

<ca>  
hogehogehogehoge.........  
</ca>

として記述する.

<cert><key>についても同様にやる.cat client.crt >> client.confとかでやるとなんとなく楽.
もちろん直接書き込まなくても設定はできる.(個人的には1ファイルで済むならそっちが楽かな...というかんじ)

その1: ヘッドレスのUbuntu(VM) からつなぐ(要client.conf)

Ubuntuの場合,nobodyとかnogroupとかいうuserやgroupがないらしいので,$USERとかotakuとかなんか適当に書き換えておくこと. 3

宅鯖で動く(予定)やつなので,起動時に勝手につながるようにしておく.

sudo apt install openvpn  
sudo systemctl enable openvpn@client  

sudo cp ca.crt client.crt client.key client.conf /etc/openvpn/ 

openvpn client.conf で検証できる.問題なければsudo systemctl start openvpn@client

あとは起動の度に宅鯖VMVPNにつながるようになる.

その2: スマートホォン(iOS, Android) からつなぐ(要client.ovpn)

App Store/Play StoreからOpenVPN Connectをインストール.

こんなの.--> https://itunes.apple.com/jp/app/openvpn-connect/id590379981

👆のテンプレを適宜書き換えたあと, client.confとなっているのをclient.ovpnにリネーム.こうしないと,👆のOpenVPN Connect Appが読めない.

iOSiTunesで転送するとよい,らしいが,アプリが設定を取り込むたびに.ovpnファイルは消費されて消えてしまうのでOneDriveやDropboxとかを経由するのがお手軽.

あとはアプリ起動してトグルをガチャガチャきゅ~と・ふぃぎゅ@ 4するとVPNに繋がったり繋がったりする.フリーWi-Fiスポットとかで重宝する.

その3: Windowsの入ってるピシ からつなぐ

※client.confはなくてもいい

vpnuxをインストールする.
https://www.plum-systems.co.jp/vpnux-client/

vpnuxの設定画面は👇
とくになし.

f:id:nesosuke:20190426222614p:plain

OpenVPNコミュニティ謹製のやつもあるらしいけど,使ったこと無いので割愛.

あとがき

途中から書くの飽きちゃった.

Windowsで特にそうなんだけど,起動時に自動接続できるってのじゃないのでSoftEtherL2TP/IPsecのものもそのうち立てたい.

<追記>
Windowsでも起動時自動接続できました.
nesosuke.hatenadiary.com
<追記ここまで>

ともあれ,これでVPS上でBitwardenをセルフホスティングしなくてもよさそうだし,いろいろ捗りそう.

参考とか