No Such Blog or Diary

«Prev || 1 | 2 | 3 |...| 1103 | 1104 | 1105 || Next»

Ubuntu 20.04.3 LTS を OpenVPN サーバにしてみた

L2TP/IPsec ももう古いかなということで,OpenVPN で VPN サーバを用意してみた.とりあえず,コミュニティの How to の Installing OpenVPN を見つつテキトウに,Win と Android からつながるところまでやってみた.

まず,openvpn と easy-rsa のパッケージをインストール.easy-rsa はマシン識別のための証明書などを自前でやるために使う.バージョンはそれぞれ 2.4.7-1 と 3.0.6-1 が入った.

sudo apt install openvpn easy-rsa

次に,証明書周りのセットアップを.そのためにまずは認証局の諸々のファイルを置く場所の作成と認証局の情報を書いたファイルを用意.

sudo mkdir /etc/openvpn/easy-rsa
sudo cp -r /usr/share/easy-rsa/* /etc/openvpn/easy-rsa/
cd /etc/openvpn/easy-rsa/
sudo cp vars.example vars

この vars ファイル内の変数 EASYRSA_REQ_(COUNTRY|PROVINCE|CITY|ORG|EMAIL) の辺りに自分の情報をテキトウに入れておく.

そして,認証局の初期化をして,認証局の証明書を作成.鍵のパスフレーズ(後で使う)を聞かれるのでテキトウに設定して,Common Name はテキトウに My-OpenVPN-CA とかで.

sudo ./easyrsa init-pki
sudo ./easyrsa build-ca

あと,DH のパラメータと HMAC 用の鍵を生成しておく:

sudo ./easyrsa gen-dh
sudo openvpn --genkey --secret /etc/openvpn/ta.key

次いで,サーバ(server)とクライアント(client1)の証明書を発行.面倒な場合は nopass をオプションにつければパスなしの証明書になる.パスをつけるならこのオプションを外す.最終的に証明書発行をするところで CA の鍵のパスフレーズを聞かれるので入れる.

sudo ./easyrsa build-server-full server nopass
sudo ./easyrsa build-client-full client1 nopass

次に,openvpn サーバの設定をする.サンプルファイルに説明があるのでそれを見れば良いけれど,必要なところだけ書くのをヒアドキュメントでコマンドにすると次のような感じ.これは,サーバの外向きネットワークが 192.168.1.0/24 で,そのインターフェースが eth0 で,VPN でつなげてきた連中は 10.8.0.0/24 の仮想ネットワークにつなげて NAPT するという設定.サーバのポートはデフォルトの 1194/udp で.

sudo tee /etc/openvpn/server.conf <<'EOS'
port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key
dh /etc/openvpn/easy-rsa/pki/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt
push "route 192.168.1.0 255.255.255.0"
push "redirect-gateway eth0 bypass-dhcp"
keepalive 10 120
tls-auth /etc/openvpn/ta.key 0
cipher AES-256-GCM
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3
explicit-exit-notify 1
EOS

この設定だと NAPT が動いてくれないと困るので,そこらを有効化する(/etc/sysctl.conf で net.ipv4.ip_forward=1 として,iptables で 10.8.0.0/24 の IPマスカレードを有効化):

sudo sed -e 's/.*net.ipv4.ip_forward=.*/net.ipv4.ip_forward=1/' -i /etc/sysctl.conf
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE

1194/udp が開いてないなら開けておく.また,iptables の内容を保存しておくなら,iptables-persistent を入れて netfilter-persistent save しておく:

sudo apt install iptables-persistent
sudo service netfilter-persistent save

なお,ufw 使ってるときには /etc/ufw/sysctl.conf の方で net/ipv4/ip_forward=1 としてフォワーディングを有効化する.

これでサーバの準備ができたのでサービス起動:

sudo systemctl start openvpn

ログ確認(@server をつけないとサーバのログが見られない):

sudo journalctl -u openvpn@server

つぎに,クライアント側を準備.

Windows マシンの場合は,OpenVPN のクライアントをインストールする.https://openvpn.net/community-downloads/ から MSI installer を落として入れれば OK.32-bit 版か 64-bit 版か自分の環境にあったほうを.

そして、"C:\Program Files\OpenVPN\config\" に設定ファイルを置く.メンドイので WSL のコマンドとしてやれば次のとおり.192.168.1.132 としている部分はサーバの外側のアドレスで,FQDN でもよい.他のパラメータはサーバのパラメータと同じ感じで.

cd "/mnt/c/Program Files/OpenVPN/config"
cat > client1.ovpn <<'EOS'
client
dev tun
proto udp
remote 192.168.1.132 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
verb 3
EOS

さらに,同じディレクトリにサーバ上の以下のファイルを持ってくる(CA 証明書と,クライアント証明書と,HMAC 用鍵):

/etc/openvpn/easy-rsa/pki/ca.crt
/etc/openvpn/easy-rsa/pki/issued/client1.crt
/etc/openvpn/easy-rsa/pki/private/client1.key
/etc/openvpn/ta.key

これで Windows のクライアントの準備完了.あとは,クライアントの GUI を起動して,タスクトレイのアイコンから右クリックで「接続」でつながる.クライアントの証明書にパスをつけていた場合は,この接続時に入力することになる.

次に Android 用の準備.Android の場合は諸々をひとつのファイルに突っ込んだ設定ファイルを作る.基本的には,設定ファイルで ca, cert, key, tls-auth にファイル名を指定していた部分を,そのパラメータ名のタグで囲って中身を書く形になる.あと,key-direction 1 という新たなオプション項目を入れる(tls-auth の第二パラメータだったのを個別に書いたもの).

色々メンドイのでサーバ上にスクリプトを用意.192.168.1.132 としてる部分はサーバの外側のアドレスで,FQDN でもよい:

cd /etc/openvpn/easy-rsa/
cat > gen_ovpn.sh <<'EOF'
#!/bin/bash
if test ${EUID:-${UID}} != 0; then
  echo "run as root"
  exit 0
fi
if test $# -lt 1; then
  echo "Usage: $0 clientname"
  exit 0
fi
name=$1
cat <<'EOS'
client
dev tun
proto udp
remote 192.168.1.132 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
key-direction 1
cipher AES-256-GCM
verb 3
EOS
function inlining() {
  tag=$1
  file=$2
  echo "<${tag}>"
  cat "$file" | sed -e '/CERTIFICATE/,/CERTIFICATE/p;/PRIVATE KEY/,/PRIVATE KEY/p;/Static key/,/Static key/p;d'  
  echo ""
}
inlining ca /etc/openvpn/easy-rsa/pki/ca.crt
inlining cert "/etc/openvpn/easy-rsa/pki/issued/${name}.crt"
inlining key "/etc/openvpn/easy-rsa/pki/private/${name}.key"
inlining tls-auth /etc/openvpn/ta.key
EOF
chmod 744 gen_ovpn.sh

そして,サーバでクライアント(client2)の証明書を発行して,その証明書などを含んだ設定ファイル(client2.ovpn)をスクリプトに生成させる:

sudo ./easyrsa build-client-full client2
sudo ./gen_ovpn.sh client2 > client2_full.ovpn

あとは,このファイルを google drive 経由とかで Android へ持っていって,OpenVPN のオフィシャルの OpenVPN Connect のアプリを入れてそのファイルを登録すれば OK.接続はアプリの GUI でスイッチをポチるだけ.

なお,この 1ファイルに全部突っ込んだやつは Windows でも使える.

ということで,以上で OpenVPN サーバを用意できることが確認できた.めでたし.NAPT じゃなくてブリッジにするのはまた今度.

シャワーヘッドのクエン酸煮

シャワーヘッドに水垢が付いて何箇所かの穴だけシャワーが変な方向に飛んでく状態になっていた.夏はこれでも良かったのだけど,変な方向に飛んでったお湯だけすぐに冷たくなるので冬は悩ましい.

ということで,シャワーヘッドの穴のあいてる部分のパーツをクエン酸で煮た.そしたらめでたく水垢は消えて無くなった.お掃除完了.

そしてヘッドを分解してみて気づいたけど,何かプラスチック片みたいなのが穴にハマっててそこらの穴だけ水垢が付きやすかったっぽい.どこから流れてきた破片なのやら……

鏡餅をポチる

去年と同じく六星のウェブストアで紅白の鏡餅をポチった.大き方から2つ,1升のと5合の.5合のだけにしようかと思ってたけど送料が千円弱かかるので割合的に微妙だなぁと思って1升のも追加.

さて,年明けにうまく割る方法をちゃんと考えておくか.

ネズミ捕り?がいた

R201 バイパスの烏尾トンネルを西に抜けて 2個目の立体交差(r415 との交差)のところで,バイパスからの降り口のところにパトカーと5台くらいの自動車が停まってて警察官が「止まれ」を持ってうろちょろしてた.最初は事故かなとも思ったけど,事故の気配もなかったのでネズミ捕りだろう.あの辺りは緩やかに下ってるからスピード出やすいし.

だがしかし,追い越し車線でネズミ捕りにビビって急に時速50キロ未満で走行し始めて後ろを詰まらせまくってた危険運転な車はなぜスルーされるのだろう?

「十分な防寒対策」ってどれくらい?

室内で長時間椅子に座ってるお仕事の連絡事項に「換気を行いますので十分な防寒対策をお願いします。」ってあったのだけど…… 十分な防寒対策ってどんなもんだろう?

もろもろ情報を整理してみると,どうやら窓を開けた上でサーキュレーターで室内の空気を動かすらしい.となると,「やわく風の吹いてる屋外の日陰でじっと動かずにいても大丈夫」ってくらいかな?

まあ,よく分からん.ガチ装備で行って暑かったら削るか.

〇〇会から振込用紙がやってきてた

〇〇会からの封筒が来たのだけど,中には振込用紙が入っててデカデカと「会費納入専用」って書いてあった.これだけ見ると「あっ,会費の請求書が来たから払わんと」とか思って振り込みそうになるが…… 

よく見ると振込用紙部分以外に "小さな字で" 「年会費 "相当額の寄付" のお願い」って書いてあった.ついでに,同封の小さな字のお手紙にもちゃんと読んだら書いてあった.

まあ,勘違いを狙ったアレだな.

«Prev || 1 | 2 | 3 |...| 1103 | 1104 | 1105 || Next»
Search
Feeds

Page Top