g00ceyの技術ブログ

CloudReady(PartII)

目次

cloudready.png openvpn.png

前回の記事でOpenVPN、独自CA証明書の取り込みをしたいと思ったので、調査結果を記事にしました。

結論

下記に点について調査したが、出来ると思う。。。という状態で調査終了とした。

  • ovpnファイルは読み込むことは出来ないが、oncファイルは読み込み可能みたい。
    • ただ、ovpnファイルを読み込みしたらうまいこと動かなかった
  • ONCファイルインポート前にCA証明書を行った際に、CA証明書の読み込みはできたので、独自CA証明書が発行したサーバー証明書についても受け付けてくれそう。

OpenVPNファイル使えないか調査してみる

OpenVPNの中身を見てみる

OpenVPN接続する際、ファイルを使ってID・パスワードを指定なしない場合下記の情報がある

  • openvpn接続時の設定(IPとかVPNのグローバルIDを使用するとかね)
  • CA証明書
  • サーバー証明書
  • プライベートキー(おそらくこれで接続しているユーザを認識sてるんだろうね。)

OpenVPNのファイルを取り込むアプリとかない?

調べてみるとなさそうだね。
なので、諦めて下記の通りopenvpnコマンドで接続するってのが解決策何じゃないかな?と思い試行(これは失敗に終わります) Setting up OpenVPN on Chromium OS / Google Chrome OS | StrongVPN

openvpnコマンドを使うまで

Linux有効化

ss-linux-enable
Linuxを有効化する。

このとき記憶領域に空き容量が3G程度必要とされるようなので注意。
ss-linux-enable-error

設定としては、イメージ名?とディスクサイズでした。
適当に指定して次にとすると、下記の通り、Linuxのインストールが行われます。
ss-ilinux-install

容量の指定があるってことは、そのへんに関してもDockerみたいに分離しているのかもね。

OpenVPNインストール

インストール完了後、ターミナルが出てきますので、openvpnのインストールを行っていきます。

sudo apt install openvpn
totugekiluna@penguin:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vdb        2.0G  1.6G  334M  84% /
none            492K     0  492K   0% /dev
devtmpfs        1.4G     0  1.4G   0% /dev/tty
/dev/vdb        2.0G  1.6G  334M  84% /dev/kvm
tmpfs           100K     0  100K   0% /dev/lxd
tmpfs           100K     0  100K   0% /dev/.lxd-mounts
run             1.4G   28K  1.4G   1% /dev/.host_ip
/dev/root       170M  167M     0 100% /dev/.ssh/sshd_config
9p              1.9G  800K  1.9G   1% /mnt/chromeos
/dev/vda         48M   48M     0 100% /opt/google/cros-containers
tmpfs           1.4G     0  1.4G   0% /dev/shm
tmpfs           1.4G  8.2M  1.4G   1% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           1.4G     0  1.4G   0% /sys/fs/cgroup
tmpfs           282M   16K  282M   1% /run/user/1000

ただ、CloudReady側のディスクが見つからないなぁ。と思っていたらCloudReady側から共有しておかないといけないんですね。
ファイルから右クリックで「Linuxに共有」ってすると共有できます。
共有したものは、/mnt/chromeos

OpenVPNに接続

totugekiluna@penguin:~$ sudo openvpn keys/router.ovpn
Sat Oct 24 04:01:51 2020 OpenVPN 2.4.7 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Feb 20 2019
Sat Oct 24 04:01:51 2020 library versions: OpenSSL 1.1.1d  10 Sep 2019, LZO 2.10
Sat Oct 24 04:01:51 2020 TCP/UDP: Preserving recently used remote address: [AF_INET]XXX.XXX.XXX.XXX:1194
Sat Oct 24 04:01:51 2020 UDP link local: (not bound)
Sat Oct 24 04:01:51 2020 UDP link remote: [AF_INET]XXX.XXX.XXX.XXX:1194
Sat Oct 24 04:01:52 2020 [server] Peer Connection Initiated with [AF_INET]XXX.XXX.XXX.XXX:1194
Sat Oct 24 04:01:53 2020 TUN/TAP device tun0 opened
Sat Oct 24 04:01:53 2020 Note: Cannot set tx queue length on tun0: Operation not permitted (errno=1)
Sat Oct 24 04:01:53 2020 /sbin/ip link set dev tun0 up mtu 1500
Sat Oct 24 04:01:53 2020 /sbin/ip addr add dev tun0 local 10.8.0.14 peer 10.8.0.13
RTNETLINK answers: File exists
Sat Oct 24 04:01:53 2020 ERROR: Linux route add command failed: external program exited with error status: 2
Sat Oct 24 04:01:53 2020 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Sat Oct 24 04:01:53 2020 Initialization Sequence Completed
Sat Oct 24 04:04:23 2020 [server] Inactivity timeout (--ping-restart), restarting
Sat Oct 24 04:04:23 2020 SIGUSR1[soft,ping-restart] received, process restarting
Sat Oct 24 04:04:28 2020 TCP/UDP: Preserving recently used remote address: [AF_INET]XXX.XXX.XXX.XXX:1194
Sat Oct 24 04:04:28 2020 UDP link local: (not bound)
Sat Oct 24 04:04:28 2020 UDP link remote: [AF_INET]XXX.XXX.XXX.XXX:1194

と、一見すると大丈夫なのですけど、CloudReady、LinuxともにグローバルIPが想定したものではないし、内部ネットワークに対しての接続が行えていない。

ChrominiumOSのLinuxってネイティブではないのか?

下記ブログに書いてありますが、どうもコンテナのようですね
開発環境としてChromiumOSを使ってみる(インストール編) - takapiのブログ
いずれにしても、使いたい機能が使えないので、他の方法を検討します。

他の方法を探してみる

Chromebook から OpenVPN(TLS-Auth、LZO圧縮有り)へ接続してみた - Qiita
ONCファイルってのがあるんですね。

ONCファイルを作ってみる

Chromebook から OpenVPN(TLS-Auth、LZO圧縮有り)へ接続してみた - Qiita
こちらをもとに作ってみます。

手動で作ってみたらうまく行かなかったので、なんかコンバーターないかな?と思ったら Convert OpenVPN config files to ChromeOS ONC filesがありましたのでそのまま使ってみることに

ONCコンバーターを使ってみる

main.py

docker-compose.yml

version: "3"

services:
  converter:
    build:
      context: src
      dockerfile: Dockerfile
    entrypoint: python main.py --infile=router.ovpn --outfile=router.onc
    volumes:
      - ./src:/src
    working_dir: /src
src/Dockerfile
FROM python:alpine

RUN apk update && \
   apk add openssl build-base libffi-dev gcc

RUN pip3 install pyOpenSSL

docker-compose run --rm converter

上記でoncファイルを出力します。

ONCをインポートする

chrome://network/#general にアクセスして、ONCファイルをインポートする。

結果やってみたけどダメでした。(証明書エラー)
本気で開発環境を整えるとしたらこの先原因調査してやるべきなんですけども、ベッドで使えたらいいかな?くらいの需要なので、今回は調査はここでとどめておきます。

P.S.

CloudReady関係ないけど、Raspberry Pi OSを最新化したらカーネルがcfsをサポートしていて超感動しました。


Share

comments powered by Disqus