Arch Linux SSL VPNクライアント設定
Anheng InformationはSTAR Marketに上場している企業です。複数のセキュリティ製品を提供しており、その中にはSSL VPN機能を統合したものもあります。
Linuxをご利用の場合、WindowsとmacOSにはあるのに、このVPN製品にはデフォルトのLinuxクライアントがないことに気付くでしょう。私は職場ではMac、自宅ではLinuxを使用しており、一日中コンピューターを持ち歩くのは面倒です。
問題は、LinuxでこのVPNサービスに接続するためにどのクライアントを使用すればよいかということです。調べたところ、MacクライアントはOpenVPNのGUIクライアントであるTunnelblickをベースにしているようです。つまり、理論的にはLinux上でOpenVPNクライアントを設定するだけで済みます。
1. ArchへのOpenVPNクライアントのインストール
ArchへのOpenVPNのインストールは非常に簡単です。
1sudo pacman -S openvpn
クライアントとサーバーは同じプログラムセットを共有しており、設定ディレクトリが異なるだけです。非常に科学的で強力な方法です。
2. クライアントの設定
私のシナリオではサーバーにのみ接続するため、クライアント関連のファイルのみを設定すれば済みます。
Macクライアントの接続手順はLinuxクライアントとほぼ同じですが、クライアントの種類(GUIクライアントかコマンドラインクライアントか)が異なります。OpenVPNは、.ovpnという拡張子のプレーンテキストファイルを提供しています。
拡張子が異なる点を除けば、内容はサンプルファイル「/usr/share/openvpn/examples/client.conf」とほぼ同じです。
OpenVPNがチュートリアルファイル「client.ovpn」を提供している場合は、ファイル名を「client.conf」に変更し、「/etc/openvpn/client/client.conf」ディレクトリに配置してください。
以下の例が利用可能です:
1[root@minipc ~]# cat /etc/openvpn/client/client.conf
2client
3proto tcp-client
4remote your_server_ip_or_domain
5port 1194
6dev tun
7nobind
8verb 4
9auth-nocache
10auth-user-pass /etc/openvpn/client/auth.txt
11push-peer-info
12
13keepalive 60 300
14static-challenge "two-factor" 1
15<ca>
16-----BEGIN CERTIFICATE-----
17ここでは鍵ファイルを省略
18-----END CERTIFICATE-----
19
20</ca>
21tun-mtu 1514
22reneg-sec 0
重要なポイント:
- remote # VPNサーバーのアドレス
- port # ポート番号 (デフォルト) 1194)
- auth-user-pass your_password_file # ユーザーパスワードを保存するファイルは絶対パスで指定します。このファイルはオプションです。空白のままにした場合は、コマンドラインでの操作時に入力する必要があります。パスワードの入力が面倒な場合は、時間を節約するために入力することをお勧めします。
その他の設定も簡単です。詳細については、OpenVPN のドキュメントを参照してください。
セキュリティを強化するため、シークレットファイルの権限を 600 に設定してください。
1[root@minipc ~]# cat /etc/openvpn/client/auth.txt
2xiaomin
3xiaomin_password
4[root@minipc ~]# ls -al /etc/openvpn/client/auth.txt
5-rw------- 1 root root 19 Oct 1 13:34 /etc/openvpn/client/auth.txt
ユーザー名とパスワードはそれぞれ別の行に記述します。理由は聞かないでください。ルールですから。信じられないなら、1行にスペース/タブ区切り文字を使ってみてください。
3. 起動と実行
Macでは、GUIソフトウェアを直接実行できます。Linux用のOpenVPN GUIクライアントもいくつかあります。常連読者の方はご存知のとおり、私はシンプルで分かりやすいlabwc環境を使用しています。コマンドラインの方が便利です。
1➜ ~ sudo openvpn --config /etc/openvpn/client/client.conf
22024-10-01 15:00:17 us=265636 注: --cipher が設定されていません。OpenVPNバージョン2.5より前のバージョンでは、この場合、暗号が失敗した場合のフォールバックとしてデフォルトでBF-CBCが設定されていました。このフォールバックが必要な場合は、設定に「--data-ciphers-fallback negotiation BF-CBC」を追加するか、--data-ciphersにBF-CBCを追加してください。
32024-10-01 15:00:17 us=267321 注: ovpn-dco のカーネル サポートがないため、データ チャネル オフロードが無効になっています。
42024-10-01 15:00:17 us=267340 現在のパラメータ設定:
52024-10-01 15:00:17 us=267345 config = '/etc/openvpn/client/client.conf'
62024-10-01 15:00:17 us=267349 mode = 0
7…10,000行省略…
82024-10-01 15:02:45 us=238580 client = 有効
92024-10-01 15:02:45 us=238584 pull = 有効
102024-10-01 15:02:45 us=238588 auth_user_pass_file = '/etc/openvpn/client/auth.txt'
112024-10-01 15:02:45 us=238594 OpenVPN 2.6.12 [git:makepkg/038a94bae57a446c+] x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] [DCO] ビルド日: 2024年7月18日
122024-10-01 15:02:45 us=238605 ライブラリバージョン: OpenSSL 3.3.2 (2024年9月3日)、LZO 2.10
132024-10-01 15:02:45 us=238613 DCOバージョン: N/A
14チャレンジ:二要素認証
私の会社では二段階認証が有効になっているため、認証コードの入力を求められました。これは通常、携帯電話にインストールされている6桁のコードで、Microsoft Authenticatorに似ていますが、時間の経過とともに変化します。このコードを入力すると、通常通り通話が接続されます。二段階認証が有効になっていない場合は、コマンドを直接実行することで接続できます。
接続すると、レイヤー3用の複数のtun仮想ネットワークインターフェース(VNIC)が利用可能になります。以下に示すのはTun1で、Tun0はSing-Box用です。状況に詳しい方ならお分かりいただけると思います。
1➜ ~ ip a
21: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
3link/loopback 00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00
4inet 127.0.0.1/8 スコープ ホスト lo
5valid_lft forever preferred_lft forever
6inet6 ::1/128 スコープ ホスト noprefixroute
7valid_lft forever preferred_lft forever
82: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
9link/ether 70:70:fc:06:ac:aa brd ff:ff:ff:ff:ff:ff
103: wlp2s0: <ブロードキャスト、マルチキャスト、アップ、ダウン> mtu 1500 qdisc noqueue 状態 UP グループ デフォルト qlen 1000
11link/ether e4:c7:67:3f:6a:06 brd ff:ff:ff:ff:ff:ff
12inet 192.168.124.5/24 brd 192.168.124.255 スコープ グローバル ダイナミック noprefixroute wlp2s0
13valid_lft 75818sec preferred_lft 75818sec
14inet6 fe80::a531:de1c:800e:ed07/64 スコープ リンク noprefixroute
15valid_lft forever preferred_lft forever
164: tun0: <ポイントポイント、マルチキャスト、NOARP、UP、LOWER_UP> mtu 9000 qdisc fq_codel 状態 UNKNOWN グループ デフォルト qlen 500
17link/none
18inet 172.19.0.1/30 brd 172.19.0.3 スコープ global tun0
19valid_lft 永久 preferred_lft 永久
20inet6 fe80::ed5c:8b63:307:ee6a/64 スコープ リンク stable-privacy プロトコル kernel_ll
21valid_lft 永久 preferred_lft 永久
227: tun1: <ポイントポイント、マルチキャスト、NOARP、UP、LOWER_UP> mtu 1514 qdisc fq_codel 状態 UNKNOWN グループ デフォルト qlen 500
23link/none
24inet 172.20.0.2/24 スコープ global tun1 valid_lft 永久preferred_lft 永久
25inet6 fe80::352:fae8:59c6:8e92/64 スコープ リンク stable-privacy プロトコル kernel_ll
26valid_lft 永久 preferred_lft 永久
4. その他
上記の方法は常にフォアグラウンドで実行されます。誤って中断された場合はどうなりますか?私は普段tmuxを使っていて、複数のターミナルを開いているので、大きな問題にはなりません。
tmuxを使わない場合はどうなりますか?フォアグラウンドで実行したくない場合は、 s を使用してください。 その後、Systemd が処理を引き継ぎます。
早速、次の手順を見ていきましょう。
まず、cat コマンドを使って設定を確認します。次に、「start」コマンドに「two-factor」と入力します。tun1 が表示されれば成功です。停止後に tun1 が表示されなければ、シャットダウンされています。これで問題ないはずです。 😅
1➜ ~ sudo systemctl cat openvpn-client@.service
2[sudo] mephisto のパスワード:
3# /usr/lib/systemd/system/openvpn-client@.service
4[Unit]
5Description=%I の OpenVPN トンネル
6After=network-online.target
7Wants=network-online.target
8Documentation=man:openvpn(8)
9Documentation=https://openvpn.net/community-resources/reference-manual-for-openvpn-2-6/
10Documentation=https://community.openvpn.net/openvpn/wiki/HOWTO
11
12[Service]
13Type=notify
14PrivateTmp=true
15WorkingDirectory=/etc/openvpn/client
16ExecStart=/usr/bin/openvpn --suppress-timestamps --nobind --config %i.conf
17User=root
18Group=network
19AmbientCapabilities=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SETPCAP CAP_SYS_CHROOT CAP_DAC_OVERRIDE
20CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SETPCAP CAP_SYS_CHROOT CAP_DAC_OVERRIDE
21LimitNPROC=10
22DeviceAllow=/dev/null rw
23DeviceAllow=/dev/net/tun rw
24ProtectSystem=true
25ProtectHome=true
26KillMode=process
27
28[インストール]
29WantedBy=multi-user.target
30➜ ~ sudo systemctl start openvpn-client@client.service
31
32root@minipc からのブロードキャストメッセージ (火) 2024-10-01 15:14:28 CST):
33
34「チャレンジ:2要素認証」(PID 81068)にはパスワードの入力が必要です。
35systemd-tty-ask-password-agent ツールを使用してパスワードを入力してください。
36
37🔐チャレンジ:2要素認証 951053
38➜ ~ ip a
391: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
40link/loopback 00:00:00:00:00:00:00 brd 00:00:00:00:00:00:00
41inet 127.0.0.1/8 スコープ ホスト lo
42valid_lft forever preferred_lft forever
43inet6 ::1/128 スコープ ホスト noprefixroute
44valid_lft forever preferred_lft forever
452: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
46link/ether 70:70:fc:06:ac:aa brd ff:ff:ff:ff:ff:ff
473: wlp2s0: <ブロードキャスト、マルチキャスト、アップ、ロウアーアップ> mtu 1500 qdisc キューなし 状態 UP グループ デフォルト qlen 1000
48link/ether e4:c7:67:3f:6a:06 brd ff:ff:ff:ff:ff:ff
49inet 192.168.124.5/24 brd 192.168.124.255 スコープ グローバル ダイナミック noprefixroute wlp2s0
50valid_lft 75458sec preferred_lft 75458sec
51inet6 fe80::a531:de1c:800e:ed07/64 スコープ リンク noprefixroute
52valid_lft 永久 preferred_lft 永久
534: tun0: <ポイントポイント、マルチキャスト、NOARP、UP、LOWER_UP> mtu 9000 qdisc fq_codel 状態 UNKNOWN グループ デフォルト qlen q500
54link/none
55inet 172.19.0.1/30 brd 172.19.0.3 スコープ global tun0
56valid_lft 永久 preferred_lft 永久
57inet6 fe80::ed5c:8b63:307:ee6a/64 スコープ link stable-privacy proto kernel_ll
58valid_lft 永久 preferred_lft 永久
598: tun1: <ポイントポイント、マルチキャスト、NOARP、UP、LOWER_UP> mtu 1514 qdisc fq_codel 状態 UNKNOWN グループ デフォルト qlen 500
60link/none
61inet 172.20.0.2/24 スコープ global tun1
62valid_lft は永久に、 preferred_lft は永久に
63inet6 fe80::a713:868:de2d:2bb0/64 スコープ リンク stable-privacy プロトコル kernel_ll
64valid_lft は永久に、 preferred_lft は永久に
65
66➜ ~ sudo systemctl stop openvpn-client@client.service
67➜ ~ ip a
681: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue 状態 UNKNOWN グループ デフォルト qlen 1000
69link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
70inet 127.0.0.1/8 スコープ ホスト lo
71valid_lft は永久に、 preferred_lft は永久に
72inet6 ::1/128 スコープ ホスト noprefixroute
73valid_lft は永久に、 preferred_lft永久に
742: enp1s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
75link/ether 70:70:fc:06:ac:aa brd ff:ff:ff:ff:ff:ff
763: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
77link/ether e4:c7:67:3f:6a:06 brd ff:ff:ff:ff:ff:ff
78inet 192.168.124.5/24 brd 192.168.124.255 スコープ グローバル ダイナミック noprefixroute wlp2s0
79valid_lft 75259sec preferred_lft 75259sec
80inet6 fe80::a531:de1c:800e:ed07/64 スコープ リンク noprefixroute
81valid_lft 永久 preferred_lft 永久
824: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 9000 qdisc fq_codel state UNKNOWN group default qlen 500
83link/none
84inet 172.19.0.1/30 brd 172.19.0.3 スコープ global tun0
85valid_lft 永久 preferred_lft 永久
86inet6 fe80::ed5c:8b63:307:ee6a/64 スコープ リンク stable-privacy proto kernel_ll
87valid_lft 永久 preferred_lft 永久
この記事を国慶節の午後に書いたことに読者の皆さんはお気づきでしょうか。
つまり、休暇を犠牲にして中国語コミュニティに貢献するということです。応援したい方は、ぜひ公式アカウントをフォローしてください。お願い事はこれだけですが、公式アカウントに広告を掲載することで収入を得ることができます。
転職してからは、以前よりもずっと忙しくなり、のんびりする暇などありません。もちろん、まだ勉強中ですが、退職が延期になったので、他にできることは何もありません。執筆頻度は激減し、余暇を犠牲にするしかありません。
キーワードライティングでは儲からない。最近の強気相場では、1日10万人民元以上稼いでいたのに、この記事を書いても広告収入はほとんどゼロです。記事1本を書くのに少なくとも2時間かかり、労力と得られる利益は全く釣り合いません。ドメイン名の取得費用さえ回収できません。
考えてみると、オンライン上の中国語リソースは減少しているようです。問題を解決する価値ある中国語コンテンツも見つけたのですが、他のコンテンツは大儲けしているようには見えません。なぜ私がそんなに功利主義にならなければならないのでしょうか?ただ貢献するだけでも悪くはないのですが、本当に恥ずかしいです。読者が増えて、コンテンツの質が時間とともに向上したらどうでしょうか?それとも、苦しんでいる誰かがまさにこれを必要としているのかもしれません。
著作権に関する声明:
- 出典のないコンテンツはすべてオリジナルです。、無断転載はご遠慮ください(転載後にレイアウトが崩れたり、内容が制御不能になったり、継続的に更新できない等の理由から)。
- このブログのコンテンツを非営利目的で解釈したい場合は、(読者の便宜のため)「オリジナル ソース」または「参照リンク」の形式でこのサイトの関連 Web ページ アドレスを提供してください。
このシリーズの投稿:
- Linux環境のキー検出
- Ubuntuの起動を高速化する
- ヒステリーサイエンスインターネットブリーフ
- Wayland 環境の ksnip をコピーできない問題が解決されました
- Wofi 使い方チュートリアル
- Linux 用の Python の最新バージョンをインストールする
- ZFSスナップショットテスト