web-dev-qa-db-ja.com

openvpn:複数のIPアドレスを持つドメインにVPNを使用しない方法

特定のドメインのopenvpnを迂回したいのですが。私が試してみました:

allow-pull-fqdn
route specificdomain.com 255.255.255.255 net_gateway

ただし、これは単にドメインのDNSルックアップを実行し、取得したIPをルーティングテーブルに追加してデフォルトルートを使用します。

問題は、特定のドメインに複数のIPアドレスがあり、それらはネットマスクを使用できる単純なネットワーク上にないように見えることです。

私もしようとしました:

Push "route specificdomain.com 255.255.255.255 net_gateway"

ドキュメントを読んだことを告白しましたが、違いが何であるかはまだわかりません-ここではルーティングテーブルに表示されず、機能しません(単一のIPアドレスを持つドメインを使用している場合でも)

このように複数のIPアドレスを持つドメインをルーティングしないようにopenvpnを取得する方法はありますか、それともopenvpnが最初に要求していたドメインが何であるかを知るには遅すぎますか?最善の策は考え出すことです現在ドメインに一致するIPアドレスのコレクション?

悲しいことに、あなたが望むのは不可能です。ルーティングはIPアドレスに基づいて機能し、ドメイン名はIPパケットに存在しないため、ルーティングの決定に使用することはできません。

ルートを追加するときに、特定のドメイン名にルートを追加できますが、その名前は、ルーティングテーブルに追加される前にDNSをIPアドレスに解決します。また、DNSエントリのIPアドレスが変更されても、ルーティングテーブルは更新されないことに注意してください。

基本的にあなたのオプションは次のとおりです。

1:VPNの起動時に、VPNなしでアクセスするすべての特定のホスト名へのルートを追加します。名前はすぐに解決されますが、IPアドレスが非常に迅速に変更されない限り、それは問題ではない可能性があります。

2:ターゲットドメインが使用するすべてのネットブロックを把握し、VPNなしでルーティングをセットアップします。しかし、場合によってはネットブロックを把握することが不可能です。

3:ルーティングロジックを逆にします。「すべてをVPN経由でルーティング」ルールを削除し、特定のネットブロックのみをVPN経由でルーティングし(制御していない特定のドメインのネットブロックよりもこれらを知っている可能性が高い)、デフォルトルートにします。すべての非VPNトラフィックをVPNなしでインターネットに転送します。

4
Bass

他の人が説明したように、ルーティングは宛先IPアドレスの取得に使用された宛先DNS名を知らないため、これは理論的には不可能です。ただし、@ Bassが「チョップド」DNSとして説明したことを実行できます。まず、独自のDNSを設定します(私はVPNルーターとしてRaspberry Piを使用しているので、Linuxのすべての利点があります。Windowsワークステーションでは使用しないことをお勧めします:)。 DHCPを無効にしてdnsmasqを使用し、最初に、次のようにdnsmasq.confを使用して純粋なキャッシュDNSサーバーとして設定します。

log-queries          # Logging
log-async            # Async logging    
domain-needed        # Don't forward short names
bogus-priv           # Never forward addresses in the non-routed address spaces.
server=8.8.8.8       # Use Google DNS 1 upstream
server=8.8.4.4       # Use Google DNS 2 upstream

独自のDNSをマシン(デスクトップやその他のもの、たとえばChromecast、テレビなど)に強制し、それが機能していることを確認したら、ハッキングを開始できます。プログラム/アプリを実行するか、リダイレクトするWebサイトにアクセスし、ルーティングマシンで次のようにします。

Sudo killall -SIGUSR1 dnsmasq
tail /var/log/syslog

これで、最近アクセスしたIPアドレスとその名前のNiceダンプができました(適切なアプリケーションはDNSにアクセスしようとしますが、IPをハードコーディングする人はもういないと思います)。

次に、dnsmasqまたはルーティングマシンを再起動し(キャッシュを確実にクリアするため)、OpenVPNをバイパスするGoogle DNSに強制的にアクセスします。このようなことをすることによって:

Sudo route add -net 8.8.8.8 netmask 255.255.255.255 gw 192.168.1.1 dev eth0
Sudo route add -net 8.8.4.4 netmask 255.255.255.255 gw 192.168.1.1 dev eth0

明確にするために、eth0はインターネットプロバイダーに接続するネットワークインターフェイスであり、192.168.1.1はVPNをバイパスするゲートウェイアドレスです。次に、app/website/deviceを起動し、名前とIP番号をダンプして、演習を繰り返します。今は違うはずです。

ルーティングマシンを再起動し(上記の一時ルートを削除するため)、IPごとに次の2つのことを行います。

  1. 次のように、各アドレスのdnsmasq.confにアドレス行を追加して、2番目のステップで取得したoff-vpn-IPに強制的に解決します。

    アドレス=/www.avoidvpn.com/off.vpn.ip.obtained

  2. アドレス固有のルートをルーティング構成に追加します(再起動するたびに実行するか、永続ルートとして保存する必要があります)

    Sudo route add -net off.vpn.ip.obtained netmask 255.255.255.255 gw 1​​92.168.1.1 dev eth0

ここでも、192.168.1.1が非VPNゲートウェイであると想定しています。

警告

  1. これはひどい解決策です
  2. わたしにはできる
  3. IPはいつでも変更される可能性があり、セットアップは無効になります
  4. 幸い、負荷分散またはコンテンツ制限に異なるIPが使用されている場合、3。のシナリオは頻繁ではありません(たとえば、これらのメカニズムをバイパスしますが、IPはとにかく機能します)
  5. 存在してはならないIPからトラフィックを取得したときに、サーバーを保守している人がどう思うかわかりません(たとえば、理論的には負荷がかかってはならないサーバーにアクセスし続けているときに、他のIPに負荷を転送しようとしている人など)。

それが役に立てば幸いですが、はい、それはひどい解決策です。楽しんで頑張ってください!

0
xmp125a