- Linux に OpenVPN をクライアントとしてインストールし、特定のルートを VPN 経由でルーティングするか、通常のルート経由でルーティングしますか?
- 前提条件
- OpenVPNのインストール
- 基本設定(手動実行)
- デフォルトルート制御: デフォルトのサーバー動作
- 方法1 - 一部のIPのみをVPN経由で送信する(スプリットトンネル)
- 方法2 - すべてのトラフィックはVPNを経由しますが、特定のIPアドレスは通常のルートを経由します(バイパス)
- 方法3 - ポリシーベースルーティング
- systemd(自動起動)で接続する
- DNSと名前解決の問題
- 完全な client.ovpn の例(サンプル)
- セキュリティと運用のヒント
- よくあるエラーを修正する
- さまざまなタイプのユーザー向けのアプリケーションとヒントの比較
- 要約と結論
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-nocachechmod 600 セキュリティを強化するために、証明書ベースの認証 (クライアント証明書) と tls-crypt/tls-auth を保護して使用します。.
デフォルトルート制御: デフォルトのサーバー動作
ルートのデフォルトの動作は、多くの場合、サーバーによって決定されます。
- サーバーが
リダイレクトゲートウェイ 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 $DEVb) アップ/ダウンスクリプトで自動化
で クライアント.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をバイパスするには、以前のゲートウェイを保存し、適切なルートを追加してください。より複雑な動作には、ポリシーベースルーティングを使用してください。.









