LinuxでOpenVPNをクライアントとして設定する方法
この記事では、Linux 上で OpenVPN をクライアントとして設定し、適切なルーチンを使用してネットワーク トラフィックを正確に制御する方法を説明します。.

LinuxでOpenVPNをクライアントとして設定する方法

この体系的かつ技術的な記事では、LinuxクライアントとしてOpenVPNを設定する方法を説明します。ステップバイステップの説明とルート管理により、トラフィックフローをより適切に制御できます。この記事には、OpenVPNを最適に使用するためのセキュリティのヒントとトラブルシューティングも含まれています。.
0 株式
0
0
0
0

 

Linux に OpenVPN をクライアントとしてインストールし、特定のルートを VPN 経由でルーティングするか、通常のルート経由でルーティングしますか?

この実践的かつ技術的なステップバイステップガイドでは、主要なLinuxディストリビューションでOpenVPNをクライアントとして設定する方法を詳しく説明します。サンプルファイル、ルート管理用のアップ/ダウンスクリプト、スプリットトンネリングとIPバイパスの方法、ユーザー名/パスワード認証のヒントなどを提供します。.

 

前提条件

始める前に、次のものがあることを確認してください。

  • Linux システム (Ubuntu/Debian/CentOS/Fedora/Alma)
  • 閉鎖 オープンVPN インストール済み
  • サーバー構成ファイルまたはファイル .ovpn VPNプロバイダーから
  • 複合認証の場合のユーザー名/パスワード(ユーザー名/パスワード + 証明書)

 

OpenVPNのインストール

一般的なディストリビューションのインストール コマンド:

sudo apt update && sudo apt install openvpn
sudo dnf install openvpn

 

基本設定(手動実行)

ファイル クライアント.ovpn ある場合は、次のコマンドを使用してすぐに実行します。

sudo openvpn --config client.ovpn

サーバーがユーザー名/パスワードを使用しており、毎回入力したくない場合は、資格情報ファイルを作成します。

sudo tee /etc/openvpn/credentials <<'EOF'
myuser
mypassword
EOF
sudo chmod 600 /etc/openvpn/credentials

ファイル内 .ovpn 次の行が存在するか、追加されている必要があります。

auth-user-pass /etc/openvpn/credentials

セキュリティのヒント: から 認証なしキャッシュ OpenVPN がパスワードをメモリにキャッシュするのを防ぐために使用します。

auth-nocache

 

デフォルトルート制御: デフォルトのサーバー動作

ルートのデフォルトの動作は、多くの場合、サーバーによって決定されます。

  • サーバーが リダイレクトゲートウェイ def1 プッシュすると、すべてのトラフィックが VPN (フル トンネル) を通過することになります。.
  • サーバーがデフォルトルートを受け入れないようにするには、 ルートノープル 使用してから、必要なルートを手動で追加します。.

 

方法1 - 一部のIPのみをVPN経由で送信する(スプリットトンネル)

特定のアドレスのみをVPN経由で送信したい場合は、 ルートノープル ファイル内 クライアント.ovpn 必要なルートを使用して追加します。.

client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun

route-nopull

route 203.0.113.45 255.255.255.255
route 198.51.100.0 255.255.255.0

説明:ルートノープル サーバーからルートが受け入れられず、ラインが詰まってしまう ルート 特定の宛先を VPN 経由でルーティングします。.

 

方法2 - すべてのトラフィックはVPNを経由しますが、特定のIPアドレスは通常のルートを経由します(バイパス)

サーバーが リダイレクトゲートウェイ def1 プッシュし、特定のアドレスがデフォルト (インターネット) ルートを通過するようにしたい場合は、デフォルト ゲートウェイを保存し、バイパス ルートを書き換える必要があります。.

A) 接続する前に元のゲートウェイを保存する

接続前にデフォルト ゲートウェイとデバイスを取得するためのサンプル コマンド:

GW=$(ip route show default | awk '/default/ {print $3}')
DEV=$(ip route show default | awk '/default/ {print $5}')

立ち上がった後 tun0GW 経由でバイパスする IP を再度追加します。

sudo ip route add 203.0.113.0/24 via $GW dev $DEV
sudo ip route add 8.8.8.8/32 via $GW dev $DEV

b) アップ/ダウンスクリプトで自動化

クライアント.ovpn スクリプトを実行するには、次の行を追加します。

script-security 2
up /etc/openvpn/client-up.sh
down /etc/openvpn/client-down.sh

/etc/openvpn/クライアントアップ.sh:

#!/bin/bash
echo "$(ip route show default | awk '/default/ {print $3, $5}')" > /var/run/openvpn.origgw
GW=$(awk '{print $1}' /var/run/openvpn.origgw)
DEV=$(awk '{print $2}' /var/run/openvpn.origgw)
ip route add 8.8.8.8/32 via $GW dev $DEV
ip route add 203.0.113.45/32 via $GW dev $DEV
exit 0

/etc/openvpn/client-down.sh:

#!/bin/bash
GW=$(awk '{print $1}' /var/run/openvpn.origgw)
DEV=$(awk '{print $2}' /var/run/openvpn.origgw)
ip route del 8.8.8.8/32 via $GW dev $DEV || true
ip route del 203.0.113.45/32 via $GW dev $DEV || true
rm -f /var/run/openvpn.origgw
exit 0

スクリプトを実行することを忘れないでください:

sudo chmod +x /etc/openvpn/client-up.sh /etc/openvpn/client-down.sh

 

方法3 - ポリシーベースルーティング

ポリシーベースのルーティングを使用して、ソース固有のトラフィックを VPN 経由で送信できます。.

echo "200 vpnroute" | sudo tee -a /etc/iproute2/rt_tables
sudo ip rule add from 10.0.0.5/32 lookup vpnroute
sudo ip route add default dev tun0 table vpnroute

情報を見つけるには tun0 仮想ゲートウェイ:

ip -4 addr show dev tun0
ip route show dev tun0

 

systemd(自動起動)で接続する

パス内の設定ファイルの場合 /etc/openvpn/クライアント/ systemd ユニットを実行できます:

sudo systemctl start openvpn-client@client
sudo systemctl enable openvpn-client@client
sudo journalctl -u openvpn-client@client -f

 

DNSと名前解決の問題

DNSがサーバーによってプッシュされる場合、一部のディストリビューションではスクリプトが必要となる 解決のための設定を更新 または調整 systemd-resolved あなたが持っている。.

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

システムでは systemd-resolved 追加の構成が必要になる場合があります。.

 

完全な client.ovpn の例(サンプル)

client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
auth SHA256

auth-user-pass /etc/openvpn/credentials
auth-nocache
route-nopull

route 203.0.113.45 255.255.255.255
route 198.51.100.0 255.255.255.0

script-security 2
up /etc/openvpn/client-up.sh
down /etc/openvpn/client-down.sh

 

セキュリティと運用のヒント

  • 資格情報ファイルを作成するには chmod 600 守る。.
  • クライアント証明書から TLS認証/TLS暗号化 単純な DoS を防ぐために使用します。.
  • から 認証なしキャッシュ パスワードをメモリにキャッシュしないようにするために使用します。.
  • OpenVPNを最新の状態に保ち、次のような最新の暗号/ハッシュを使用してください。 AES-256-GCM または チャチャ20 使用。.
  • ログを監視し、logrotate を備えた systemd を使用してログをローテーションします。.

最も低いレイテンシが求められる環境 (トレーダー/ゲーマー) では、近い場所やスプリット トンネリングを使用して、ping と安定性を維持するために必要なサービスのみをルーティングします。.

 

よくあるエラーを修正する

  • 接続が確立されていません: ファイアウォール (ufw/iptables/セキュリティ グループ) のポートとプロトコルを確認してください。.
  • DNSが機能していません: 解決のための設定を更新 または手動調整 /etc/resolv.conf 使用。.
  • ルートが追加されていない: 確認してください スクリプトセキュリティ2 有効になっており、スクリプトは実行可能です。.
  • インターネット接続が切断された後: サーバーはおそらくデフォルト ルートをプッシュしました。bypass または route-nopull メソッドを使用します。.

 

さまざまなタイプのユーザー向けのアプリケーションとヒントの比較

  • トレーダー: ping と安定性が必要です。近い場所を使用し、可能であれば、トレーディング サーバーに接続するときはスプリット トンネルのみを使用してください。.
  • ゲーマー: ゲーム トラフィックは通常、最短ルートを取る必要があります。フル トンネルでは ping が増加する可能性があるため、ゲーム サーバーのみをルーティングするか、近くのサーバーを使用します。.
  • サイト管理者/DevOps: systemd を搭載したサーバー上で OpenVPN クライアントを実行し、特定のサービスに対してポリシーベースのルーティングを使用することをお勧めします。.
  • AI/レンダリング: 大規模なデータ転送には、フルトンネルと高帯域幅のサーバーの方が適しています。.

 

要約と結論

LinuxでOpenVPNクライアントを実行するには、通常、次のファイルが必要です。 .ovpn 加えて 認証ユーザーパスワード そして必要であれば ルートノープル スプリットトンネルにはこれで十分です。フルトンネル中に一部のIPをバイパスするには、以前のゲートウェイを保存し、適切なルートを追加してください。より複雑な動作には、ポリシーベースルーティングを使用してください。.

あなたも気に入るかもしれない