![OpenVPN - ルーティングテーブルを理解する + VPN経由で特定のIPにトラフィックのみをルーティングする方法](https://rvso.com/image/83664/OpenVPN%20-%20%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%82%92%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B%20%2B%20VPN%E7%B5%8C%E7%94%B1%E3%81%A7%E7%89%B9%E5%AE%9A%E3%81%AEIP%E3%81%AB%E3%83%88%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%81%AE%E3%81%BF%E3%82%92%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
OpenVPN を使用して VPN サービスに接続していますが、すべて正常に動作しています。接続すると、次のルールが自動的に設定されます。
root@linux:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:AA:1B:01:AC:FB
inet addr:192.168.1.201 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:46867 errors:0 dropped:0 overruns:0 frame:0
TX packets:29742 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:37977382 (36.2 MiB) TX bytes:5098121 (4.8 MiB)
Interrupt:16
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.7.7.126 P-t-P:10.7.7.125 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:23284 errors:0 dropped:0 overruns:0 frame:0
TX packets:5817 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:31366374 (29.9 MiB) TX bytes:308591 (301.3 KiB)
root@linux:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.7.7.125 128.0.0.0 UG 0 0 0 tun0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
5.120.121.114 192.168.1.1 255.255.255.255 UGH 0 0 0 eth0
10.7.7.1 10.7.7.125 255.255.255.255 UGH 0 0 0 tun0
10.7.7.125 * 255.255.255.255 UH 0 0 0 tun0
128.0.0.0 10.7.7.125 128.0.0.0 UG 0 0 0 tun0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
私が理解していることは次のとおりです:
- 私のローカルIPアドレスは192.168.1.201です
- ローカルゲートウェイは 191.168.1.1 です
- 5.120.121.114はVPNパブリックIPです
- tun0はVPNトンネルで、私のマシンのアドレスは10.7.7.126です
- 10.7.7.125はPTPアドレスであり、VPNのもう一方の「端」であると理解しています。
ルーティング テーブルに関しては、次のことを理解しています。
- デフォルトでは、すべてのトラフィックはインターフェイス tun0 の 10.7.7.125 経由で送信されます (しかし、なぜそのマスクなのでしょうか?)
- 10.7.7.1はtun0経由で到達可能
- VPN のパブリック IP は eth0 経由でアクセスできます
2 番目のデフォルト ゲートウェイがわかりません。これは VPN がアクティブでないときのデフォルトですが、単にバイパスされるだけですか?
10.7.7.1 はどうですか? VPN のゲートウェイのようです...
なぜ宛先が 128.0.0.0 なのでしょうか?
OpenVPN はこれらすべてのルールを自動的に作成します。しかし、それらは何に基づいて作成されるのでしょうか?
VPN のサーバー側を制御することはできず、クライアント構成のみを制御できます。
では、次のような場合はどうすればよいのでしょうか:
- 216.58.213.174 へのすべてのトラフィックを VPN tun0 経由で送信し、残りすべてを eth0 経由で送信するように強制しますか?
- VPN を起動するときに自動的に確立することはできますか?
これを理解する上でのご提案とサポートに感謝いたします。
KR、デンマーク
編集:
root@linux:~# ip route list
0.0.0.0/1 via 10.7.7.125 dev tun0
default via 192.168.1.1 dev eth0
5.152.210.249 via 192.168.1.1 dev eth0
10.7.7.1 via 10.7.7.125 dev tun0
10.7.7.125 dev tun0 src 10.7.7.126
128.0.0.0/1 via 10.7.7.125 dev tun0
192.168.1.0/24 dev eth0 src 192.168.1.201
答え1
2 番目のデフォルト ゲートウェイがわかりません。これは VPN がアクティブでないときのデフォルトですが、単にバイパスされるだけですか?
これは、デフォルト ゲートウェイを維持しながらトラフィックをトンネル経由でルーティングするための OpenVPN のハックの 1 つです。0.0.0.0/1 および 128.0.0.0/1 ルートは、すべてのアドレスに一致しながらもより具体的なため、0.0.0.0/0 ルートよりも優先されます。詳細については、OpenVPN ドキュメントで「def1」を検索してください。
10.7.7.1 はどうですか? VPN のゲートウェイのようです...
おそらくそうだ
OpenVPN はこれらすべてのルールを自動的に作成します。しかし、それらは何に基づいて作成されるのでしょうか?
おそらくサーバーからプッシュされたものです。クライアントの起動時の出力と設定ファイルをご提供いただければ、より詳しい情報を提供できます。
VPN のサーバー側を制御することはできず、クライアント構成のみを制御できます。
はい、しかしクライアントは高度に構成可能なので、サーバーがクライアントに要求するほとんどすべてのことを上書きできます。それでも、接続するにはプロバイダーの基本要件を満たす必要があります。プロバイダーを怒らせないように、プロバイダーの「利用規約」も確認する必要があります。
では、次のような場合はどうすればよいのでしょうか:
216.58.213.174 へのすべてのトラフィックを VPN tun0 経由で送信し、残りすべてを eth0 経由で送信するように強制しますか?
はい、設定に「route 216.58.213.174 255.255.255.255 10.7.7.125」を含めてください。これで希望のルートが設定されます。設定から「redirect-gateway」オプションを削除すれば、他のルートはそのまま維持できるはずです。
VPN を起動するときに自動的に確立することはできますか?
はい、上記参照
私が説明したすべてのオプションとその他のオプションは、OpenVPN のオンライン ドキュメントに記載されています。 https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage