遠隔操作 の履歴(No.23)


OpenVPNのインストール

WindowsでOpneVPNサーバを立ててみましたが、ルーティングが上手く行かないのでUbuntu22.04にしました。

Ubuntu 22.04で OpenVPNサーバを構築する

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"
$ ./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にコピーする。コピー場所はサーバー、クライアントともに、

C:\Program Files\OpenVPN\confi

サーバーにコピーするファイルは

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 クライアント

OpenVPN Connect for macOS

ルーター設定

ルータの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" #を外す

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接続にするとストレスなくサクサク動作。