遠隔操作
OpenVPNのインストール†
WindowsでOpneVPNサーバを立ててみましたが、ルーティングが上手く行かないのでUbuntu22.04にしました。
Ubuntu 22.04で OpenVPNサーバを構築する
クライアントはMacBook
https://zenn.dev/tak848/articles/20230815-openvpn-home
証明書、秘密鍵の作成。
$ apt install openvpn easy-rsa $ make-cadir ~/openvpn-ca $ cd ~/openvpn-ca $ nano vars
varsファイルの以下の値を正しく編集する
set_var EASYRSA_REQ_COUNTRY "JP" set_var EASYRSA_REQ_PROVINCE "Tokyo" set_var EASYRSA_REQ_CITY "Setagaya-Ku" set_var EASYRSA_REQ_ORG "OpenVPNServer" set_var EASYRSA_REQ_EMAIL "me@example.net" set_var EASYRSA_REQ_OU "My Organizational Unit"
OpenVPN easy-rsaでサーバ証明書の有効期限を100年にする
https://blog.denet.co.jp/easy-rsa_validity/
set_var EASYRSA_CA_EXPIRE 36500 set_var EASYRSA_CERT_EXPIRE 36500
$ ./easyrsa init-pki
$ ./easyrsa build-ca
Enter New CA Key Passphrase:test Re-Enter New CA Key Passphrase:test Common Name (eg: your user, host, or server name) [Easy-RSA CA]:OpenvpnSV CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/openvpn/easy-rsa/pki/ca.crt
クライアント証明書作成
$ ./easyrsa build-client-full client nopass
サーバー証明書作成
$ ./easyrsa build-server-full server nopass
dhパラメータの作成
$ ./easyrsa gen-dh
/openvpn-ca/pki/ca.crtを,検証用のCAとして,サーバー・クライアント両方に登録
/openvpn-ca/pki/dh.pemを,TLSのパラメータとして,サーバーに登録
/openvpn-ca/pki/issued/client.crtを,クライアント側の証明書として,クライアントに登録
/openvpn-ca/pki/private/client.keyを,クライアント側の証明書の秘密鍵として,クライアントに登録
/openvpn-ca/pki/issued/server.crtを,サーバー側の証明書として,サーバーに登録
/openvpn-ca/pki/private/server.keyを,サーバー側の証明書の秘密鍵として,サーバーに登録
ta.keyの作成
$ sudo openvpn --genkey secret /etc/openvpn/ta.key
サーバー側・クライアント側ともに登録
作成した証明書・秘密鍵を/etc/openvpnにコピー
サーバーにコピーするファイルは
ca.crt dh.pem server.crt server.key ta.key
クライアントにコピーするファイルは
ca.crt client.crt client.key ta.key
サーバー側設定ファイル作成†
/etc/openvpn/server.conf
proto udp dev tun topology subnet ca ca.crt cert server.crt key server.key dh dh.pem tls-auth ta.key 0 port 1194 server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "route 192.168.0.0 255.255.255.0" push "redirect-gateway def1 bypass-dhcp" push "route 10.8.0.0 255.255.255.0" keepalive 10 120 persist-key persist-tun verb 3 explict-exit-notify 1 mssfix 1380
既存のネットワークが192.168.0.Xの場合。10.8.0.0 255.255.255.0はVPN側の仮想ネットワークアドレス。
クライアント側設定ファイル作成†
client.ovpn
client dev tun proto udp remote xx.xx.xx.xx 1194 resolv-retry infinite nobind persist-key persist-tun ca ca.crt cert client.crt key client.key tls-auth ta.key 1 verb 3 mssfix 1380
xx.xx.xx.xxはルーターのグローバルIPアドレス
末尾の1行は通信が遅い場合対応のオプション
https://pcvogel.sarakura.net/2015/04/20/31446
https://qiita.com/reoring/items/f6400212d3de19ee5ad7
Mac クライアント
ルーター設定†
ルータのudpポート1194を解放
バッファローのBBR-4HGの場合、ネットワーク設定→アドレス変換で設定。LAN側IPアドレスをたとえば192.168.0.30(VPNサーバーのIPアドレス)にする。
iptableによるルーティング設定†
$ sudo apt install iptables-persistent net-tools
ネットワークインターフェイス名を確認
$ ifconfig
enp0s25と出た。
ポートフォワーディングの許可
$ sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1
$ sudo sysctl -p
$ sudo iptables -A FORWARD -i tun0 -o enp6s0 -j ACCEPT $ sudo iptables -A FORWARD -i enp6s0 -o tun0 -j ACCEPT $ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o enp0s25 -j MASQUERADE $ sudo iptables -L -v # 確認
$ sudo iptables -t nat -L -v # 確認
上記失敗した場合、iptablesのリセット
$ sudo iptables -t nat -F POSTROUTING
永続化
$ sudo /etc/init.d/netfilter-persistent save $ sudo /etc/init.d/netfilter-persistent reload
サーバー起動
$ sudo systemctl start openvpn@server
$ nano /etc/default/openvpn
AUTOSTERT="all" #を外す
ufwをインストールするとiptables-persistentが削除され、ポートフォワーディングの設定も削除されてしまう。
ufwで ポートフォワーディングの許可
# nano /etc/ufw/before.rules
# START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!) -A POSTROUTING -s 10.8.0.0/8 -o enp0s25 -j MASQUERADE COMMIT # END OPENVPN RULES
を追記。
OpenVPNサーバーのマシンにUltraVNCサーバーを、クライアントマシンにUltraVNCクライアントをインストール。
UltraVNC over OpenVPNでクライアントマシンから192.168.0.30でvnc接続。サーバーマシンを遠隔操作出来るようになった。
MagicBootでWake on LAN†
http://z0001.blog87.fc2.com/blog-entry-225.html
ubuntu側は
$ sudo apt-get install ethtool
MAC ADDRは
$ ifconfig
でわかる。
OpenVPNサーバーマシンにMagicBootをインストールすると遠隔操作でWake on LAN。
サーバーはUbuntu22.04、クライアントはMacBook
iPhoneデザリングはusb接続にするとストレスなくサクサク動作。