web-dev-qa-db-ja.com

eth0とppp0が壊れているルートテーブル

私は このガイド を使用してVPNサーバー(pptp)に接続しました。これは、多くのチュートリアルで機能した唯一のガイドです。

VPNサーバーに接続した後、ルートテーブルは次のようになり、最後の2行だけになることもあります(非常にランダムです。理由があると確信しています)。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     255.255.255.255 UGH   0      0        0 ppp0
192.168.0.1     0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

私の設定:(IPは例で簡単にするために変更されました)

  • 192.168.1.20で実行されているローカルコンピューター(centos)
  • これは、内部VPNローカルIP 192.168.0.1を使用して35.100.100.35(インターネット)上の外部VPN(ubuntu)に接続します
  • CentOSが接続されると、インターフェースppp0がIP192.168.0.2で追加されます。

ただし、192.168.0.2からのすべてのトラフィックを192.168.0.1(vpnサーバー)経由でルーティングする必要があります。現在、ローカルインターネットを使用しています。

私は非常に多くのバリエーションを試しましたが、正しく理解できません。

route add default ppp0以前は機能していましたが、ルートテーブルが破壊されると、機能しなくなります。

ルートテーブルはどのように表示されますか?

1
Onimusha

あなたの問題

192.168.0.2に到着するトラフィックの送信元アドレスは35.100.100.35であると想定しているため、これには別のルーティングテーブルをお勧めします。発生している問題は、35.100.100.35がルーティングテーブルにリストされていないため、デフォルトが使用されていることです。

あなたは次のような簡単なことで逃げることができるかもしれません:

ip route add 35.0.0.0/8 via 192.168.0.1 dev ppp0

そのため、マシンが35アドレスに応答しようとすると、ppp0インターフェイスで応答します。

より堅牢で手の込んだバージョンが続きます。

注:ルーティングテーブルに加えた一時的な変更をクリアするには、マシンを再起動する必要があります。


ルーティングルール

十分に単純なルーティングルールは、特定のIPまたはサブネットとの間で送受信されるトラフィックを使用して、別のルーティングテーブルを使用することです。

ip rule add from [interface ip]/[netmask] tab [table number] priority [priority]
ip rule add to [interface ip]/[netmask] tab [table number] priority [priority]

この場合、192.168.0.2ppp0デバイスIP)に到着するトラフィックが心配です。ファイルに/etc/iproute2/rt_tablesを追加して、新しいルーティングテーブルを作成する必要があります。構文は[table number] [table name]です。私は通常、インターフェイス名をテーブル名として使用します。物事を単純にしてください。

echo "168   ppp0" >> /etc/iproute2/rt_tables 

ip rule add from 192.168.0.2/32 tab 168 priority 101
ip rule add to 192.168.0.2/32 tab 168 priority 101

これにより、192.168.0.2にアドレス指定されたすべてのトラフィックがルーティングテーブル168と一致し、そのテーブルのトラフィックに応答するすべてのトラフィックが一致するはずです。


新しいルーティングテーブルの使用

これで、トラフィックをそのルーティングテーブル168に転送しましたが、空になります。デフォルトルートを追加するだけで済みます。

ip route add default via 192.168.0.1 dev ppp0 table 168

これにより、デフォルトルートがテーブル168に追加されます。つまり、インターフェイスppp0を使用します。


それはどのようなものか

最終的なルーティングテーブルは、おそらく次のようになります。

# ip route show
default dev eth0 proto static metric 1024
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20
192.168.0.0/24 dev ppp0 proto kernel scope link src 192.168.0.2

これは標準のルーティングテーブルであり、通常はトラフィックに使用されます。ここでのルートについては、おそらく最初に定義したデフォルトであり、次の2つはインターフェイスのIPアドレスに基づいて推測されます。

# ip rule show
0:       from all lookup local
101:     from 192.168.0.2 lookup ppp0
101:     from all to 192.168.0.2 lookup ppp0

これはルーティングルールを一覧表示します。形式は「[priority]:[rule] lookup [table]」です。この例では、通常、ローカルルーティングテーブルを使用することを示しています。トラフィックが192.168.0.2との間で送受信される場合は、ppp0という名前のルーティングテーブルを使用します。

# ip route show table ppp0
default via 192.168.0.1 dev ppp0

これは、ppp0という名前のルーティングテーブルを示しています。これは、すべてのトラフィックをppp0から送信するだけです。


最終結果

この結果、トラフィックがppp0インターフェイスのIPに出入りするときに、ppp0と呼ばれるルーティングテーブルが使用されます。ルーティングテーブルppp0は、すべてのトラフィックをデバイスppp0に送信するだけです。

1
Centimane

route add -net 192.168.0.0/24 gw 192.168.0.1 dev ppp0

0