Ubuntu LinuxでVPNを介してすべてのトラフィックをルーティングする


13

何時間もトラブルシューティングを行った後、このサイトや他のサイトで潜在的なソリューションを探し回っていました。私は大学でCisco VPNを介してUbuntuのインスタンス上のすべてのネットワークトラフィックをルーティングするように取り組んでいます。組み込みのネットワークマネージャーまたはvpncを使用して、VPNへの接続を正常に確立し、VPNを介して大学のIPにトラフィックを正常にルーティングできます。ただし、これらの特定のIP範囲を除いて、VPN経由ですべてのネットワークトラフィックを正常にマップするルートを思い付くようには思えません。

これまでのところ、私は試みました:

route add -net 0.0.0.0 gw homeportal dev tun0
route add -net 0.0.0.0 tun0
route add -net 0.0.0.0 gw 1​​28.122.252.77 dev tun0
route add -net 0.0.0.0 gw 1​​28.122.252.77 dev eth0
iptables -A FORWARD -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

そして、他の多くの愚かな、効果のない、私が正確に転記するのに十分に思い出せないもの。

さらに、小さいIP範囲と特定のIPをルーティングしてみましたが、どれも役に立ちませんでした。私が観察できた影響の範囲は、名前解決の失敗と、VPNを介したトラフィックのルーティングの失敗であるため、何が問題なのか本当によくわかりません。ここで何が悪いのですか?

編集-

ip route showVPNCでVPN接続を開始した後の出力は次のとおりです。

192.168.1.254 dev eth0 proto staticによるデフォルト 
10.0.0.0/8 dev tun0スコープリンク 
91.230.41.0/24 dev tun0スコープリンク 
128.122.0.0/16 dev tun0スコープリンク 
192.168.1.254 dev eth0 src 192.168.1.32経由の128.122.252.68 
128.122.253.46 dev tun0スコープリンク 
128.122.253.79 dev tun0スコープリンク 
172.16.0.0/12 dev tun0スコープリンク 
192.168.0.0/16 dev tun0スコープリンク 
192.168.1.0/24 dev eth0 protoカーネルスコープリンクsrc 192.168.1.32メトリック1 
193.175.54.0/24 dev tun0スコープリンク 
193.205.158.0/25 dev tun0スコープリンク 
193.206.104.0/24 dev tun0スコープリンク 
195.113.94.0/24 dev tun0スコープリンク 
203.126.200.0/24 dev tun0スコープリンク 
203.174.165.128/25 dev tun0スコープリンク 
212.219.93.0/24 dev tun0スコープリンク 
216.165.0.0/17 dev tun0スコープリンク

詳しくは-

デフォルトの設定でCisco AnyConnectクライアントを介して、MS WindowsのこのVPNを介して任意のトラフィックを正常にルーティングしました。AnyConnectクライアントが動作しているときのルーティングテーブルは次のようになります(これは、192.168.1.254にある同じルーターの背後にある別のコンピュータです)。

IPv4ルートテーブル
================================================== =========================
アクティブなルート:
ネットワーク宛先ネットマスクゲートウェイインターフェースメトリック
          0.0.0.0 0.0.0.0 192.168.1.254 192.168.1.13 30
         10.0.0.0 255.0.0.0 192.168.128.1 192.168.128.197 2
      91.230.41.0 255.255.255.0 192.168.128.1 192.168.128.197 2
        127.0.0.0 255.0.0.0オンリンク127.0.0.1 306
        127.0.0.1 255.255.255.255オンリンク127.0.0.1 306
  127.255.255.255 255.255.255.255オンリンク127.0.0.1 306
      128.122.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
   128.122.252.68 255.255.255.255 192.168.1.254 192.168.1.13 31
       172.16.0.0 255.240.0.0 192.168.128.1 192.168.128.197 2
      192.168.0.0 255.255.0.0 192.168.128.1 192.168.128.197 2
      192.168.1.0 255.255.255.0オンリンク192.168.1.13 286
     192.168.1.13 255.255.255.255オンリンク192.168.1.13 286
    192.168.1.254 255.255.255.255オンリンク192.168.1.13 31
    192.168.1.255 255.255.255.255オンリンク192.168.1.13 286
     192.168.31.0 255.255.255.0オンリンク192.168.31.1 276
     192.168.31.1 255.255.255.255オンリンク192.168.31.1 276
   192.168.31.255 255.255.255.255オンリンク192.168.31.1 276
    192.168.128.0 255.255.255.0オンリンク192.168.128.197 257
  192.168.128.197 255.255.255.255オンリンク192.168.128.197 257
  192.168.128.255 255.255.255.255オンリンク192.168.128.197 257
    192.168.203.0 255.255.255.0オンリンク192.168.203.1 276
    192.168.203.1 255.255.255.255オンリンク192.168.203.1 276
  192.168.203.255 255.255.255.255オンリンク192.168.203.1 276
     193.175.54.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    193.205.158.0 255.255.255.128 192.168.128.1 192.168.128.197 2
    193.206.104.0 255.255.255.0 192.168.128.1 192.168.128.197 2
     195.113.94.0 255.255.255.0 192.168.128.1 192.168.128.197 2
    203.126.200.0 255.255.255.0 192.168.128.1 192.168.128.197 2
  203.174.165.128 255.255.255.128 192.168.128.1 192.168.128.197 2
     212.219.93.0 255.255.255.0 192.168.128.1 192.168.128.197 2
      216.165.0.0 255.255.128.0 192.168.128.1 192.168.128.197 2
        224.0.0.0 240.0.0.0オンリンク127.0.0.1 306
        224.0.0.0 240.0.0.0オンリンク192.168.1.13 286
        224.0.0.0 240.0.0.0オンリンク192.168.203.1 276
        224.0.0.0 240.0.0.0オンリンク192.168.31.1 276
        224.0.0.0 240.0.0.0オンリンク192.168.128.197 10000
  255.255.255.255 255.255.255.255オンリンク127.0.0.1 306
  255.255.255.255 255.255.255.255オンリンク192.168.1.13 286
  255.255.255.255 255.255.255.255オンリンク192.168.203.1 276
  255.255.255.255 255.255.255.255オンリンク192.168.31.1 276
  255.255.255.255 255.255.255.255オンリンク192.168.128.197 10000
================================================== =========================

ネットワークルーティングが私にとって非常に新しいことは明らかであろうと思うので、回答のかなり高いレベルの冗長性に感謝します。
deftfyodor 2014

1
クライアント(anyconnect?)を使用しているかどうかを説明でき、ルーティングテーブルを投稿できると助かります。
MariusMatutiae 2014

ip routeところで、を使用してそうします。
user1686 2014

2
はい、廃止されたルーティングコマンドは使用しないでください。ルーティングテーブルにはip route showを使用してください。廃止されたコマンドは、VLANはもちろんのこと、VPNでも可能で役立つ複雑さの一部を隠します...
MariusMatutiae

@ grawity、@ MariusMatutiae-確かに、コマンド出力で質問を編集しました。ip routeコマンドについて言及してくれてありがとう、私はこれまでに遭遇したことがありませんでした。
deftfyodor 2014

回答:


3

ルーティングテーブルの次の行に示すように、ローカルネットワークは192.168.1.0/24です。

 192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.32  metric 1

次の行に示すように、VPNネットワークは10.0.0.0/8です。

 10.0.0.0/8 dev tun0  scope link 

現在、デフォルトのルーターは次のとおりです。

 default via 192.168.1.254 dev eth0  proto static 

これはあなたが何をすべきかはもちろんであるではない、それはあなたのローカルLANに属しているため、欲しい:VPNが存在していなかったかのようにこのようにすべて自分のもののは、あなたのローカルゲートウェイを介してルーティングされます。

 You do have however, the all-important statement

 128.122.252.68 via 192.168.1.254 dev eth0  src 192.168.1.32  

これはVPNプロバイダーへのルートです。

編集:

ルーティングテーブルが、ユーザーの介入なしに、VPNから取得されたものであることに気づかなかった。これは、サービスプロバイダーがインターフェイスtun0を介してテーブルで明示的に許可されたトラフィックのみを転送する意思があることを(間接的に)示している可能性があります。

ただし、プロバイダーがすべてのトラフィックを転送する用意があるとすると、次のことを行う必要があります。

まず、IPアドレスが必要なため、反対側に接続を受け入れるゲートウェイがあるかどうかを確認する必要があります。これを行うには4つの方法があります。

1)PCがVPNに接続されている状態で、次のコマンドを試してください。

   sudo dhclient -v tun0

すべてがうまくいけば、次の行を含む応答が表示されます。

 DHCPOFFER of a.b.c.d from x.y.w.z

xywzは、ローカルゲートウェイのIPアドレスです。このテストの後でVPNをシャットダウンする必要があるかもしれませんし、PCを再起動する必要があるかもしれません。これは、ルーティングテーブルをかなり混乱させているためです。

2)または、許可されたサイト(ルーティングテーブルにtun0インターフェースを通過するように表示されるサイト)の1つに移動してから、次のコマンドを発行してみてください。

  ip neigh show

MACとIPアドレスを使用して、ARPプロトコル経由で接続されたPCのリストを取得する必要があります。ほとんどの場合、返信はゼロか1つです。単一の応答を受け取った場合、それはあなたのルーターです。

3)そのような返信が得られない場合は、

  sudo nmap -sn 10.0.0.0/8

(これは非常に遅くなります)。あなたのゲートウェイになります1どのように存在する場合、上場個の、0.1または0.254で終わるアドレスを持つ可能性が最も高い1。

4)tcpdumpコマンドを使用します。

  sudo tcpdump -n -i tun0

コマンドによって生成されたIPアドレスを確認します。

このテストにも適切な応答が得られない場合は、誰かがネットワークのネジを本当に締めていることを意味します。

しかし、楽観的に考えてみましょう。リモートルーターのIPアドレス候補xwyzがあるとします。デフォルトゲートウェイを削除する必要があります(sudoとして):

  ip route del default via 192.168.1.254

新しいものを追加します:

  ip route add default via x.w.y.z 

ナビゲートしてみてください。

繰り返しますが、プロバイダーがVPN経由で選択した少数のIPアドレスへのトラフィックのみを許可しているため、スマートユーザーがVPN経由で一般的なトラフィックを強制するのを防ぐために、追加の対策(ファイアウォール)を講じている可能性があります。この場合、あなたにできることは何もありません。しかし、彼がそうしなかった場合、上記の手順は解決策を見つけるのに役立ちます。


とても丁寧な返事をありがとうございましたが、後半に入って少し戸惑いました。出力ip addr show dev tun0読み込み 10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1412 qdisc pfifo_fast state UNKNOWN group default qlen 500 link/none inet 192.168.128.193/24 brd 192.168.128.255 scope global tun0 valid_lft forever preferred_lft foreverなしピアアドレスとは、観察されます。さらに、以前に投稿したルーティングテーブルはまったく変更されておらず、完全にvpnクライアントによって生成されていました。
deftfyodor 2014

@deftfyodor私の編集を見てください。
MariusMatutiae 2014

tcpdumpコマンドを使用して、ゲートウェイを識別し、デフォルトのトラフィックをゲートウェイにルーティングすることができました。残念ながら、それはまだ特別にプロビジョニングされたIP範囲でのみ機能します。私は確かにいくつかの追加のセキュリティ対策があると信じる傾向があります。ただし、AnyConnectクライアントを使用して、MS Windowsの同じVPNを介して任意のトラフィックをルーティングすることには何の問題もありません。
deftfyodor 2014

@deftfyodor WindosのルーティングテーブルがLinuxのルーティングテーブルと異なるかどうかを確認できますか?
MariusMatutiae 2014

それは一般的に似ていますが、いくつかの要素は異なりますが、特に0.0.0.0は、ゲートウェイとして私のネットワークルーターを経由してルーティングするように設定されており、インターフェイスとしてVPNゲートウェイを保持しています。Windowsルーティングテーブルを表示するように質問を編集しました。
deftfyodor 2014

3

すべてのrouteコマンドにネットマスクが0.0.0.0ないため、インターネット全体ではなく、特定のアドレスにのみ一致します。だから、交換する0.0.0.00.0.0.0/0、あなたがしようとした最初のコマンドで:

ip route add -net 0.0.0.0/0 gw homeportal dev tun0

VPNクライアントがそれ自体で解決するかどうかはわかりませんが、VPN経由のルーティングからトンネルエンドポイントを除外する必要がありますが、eth0インターフェース経由でルーティングする必要があります。したがって、このデフォルトルートを追加するとVPNが壊れる場合は、VPNエンドポイント用の特定のルートを追加します。

ip route add <ENDPOINT>/32 dev eth0


2
2つ目はと思われますがip route、違いますか?また、ネットマスクを追加すること常に良い考えですrouteが、0.0.0.0を追加するときに/ 0 を想定しているようです
user1686
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.