GNU/Linux >> Linux の 問題 >  >> Linux

Linux – Iptablesを介したルーティング?

このVPNクライアントは、ルーティングテーブルに接触し、接触した場合に終了するのを監視し続けます。
これは、ラップトップなどのエンドポイントに必要なセットアップの一種です。

小さなPCをVPNエンドポイントとして使用し、LAN上の他のマシンにルーティングしたい(192.168.0.0/24)。
ルーティングテーブルに触れることができず、すべてのパケットがVPNを介して強制されるためtun0デバイス、私はiptablesが192.168.0.0ネットワークへのパケットをeth1デバイスにPOSTROUTEするのに役立つと思っていました。
しかし、これがどのように機能するかはわかりません。すでに宛先ネットワーク上にあり、パケットがすでに解決されているのか、それともifaceに到達するまで発生しないのかわかりません。
ヒントはありますか?

承認された回答:

これ以上の情報を提供していないため、最善の回答方法がわかりません。

そこで、ルーティングテーブルを変更できないことを故意に無視して、いくつかの方向性を示す試みを行います(私の提案を読む理由を理解できます):

VPNクライアントと場所によって異なります カーネルのFIB(転送情報ベース)に接続します。FIBの監視、または式ルーティングテーブルを使用したVPNによる監視はlocalでのみ行われるため、運が良かったかもしれません。 およびmain ルールテーブル。

を使用してルーティングルールを確認できます
ip rule show

タグ「lookup」(ルールテーブルエントリ)の背後にある文字列ごとに、

を使用して、FIBからの対応するルーティング情報をクエリできます。
ip route show table <name>

運が良ければ、要件に一致するルールを作成して、ルールルックアップテーブルで優先順位を付けることができます。たとえば(私はあなたに有利なスタートを切るために何かを作りました)、mainよりも優先度の高い新しいルールを追加しましょう 特定のフローへ:

ip rule add from 192.168.1.0/24 to 10.10.212.1/30 iif eth0 oif eth2 lookup 888 pref 12000
ip rule show
   0:   from all lookup local 
   12000:   from 192.168.1.0/24 to 10.10.212.1/30 iif eth0 oif eth2 lookup 888 
   32766:   from all lookup main 
   32767:   from all lookup default 

標準のLinux(この投稿の場合はUbuntu)システムでは、3つのデフォルトのルールテーブルlocalが表示されます。 、main およびdefault 、通常はmainのみが表示されます netstat -rnを呼び出すときのテーブル たとえば。

次に、ルックアップテーブル888のFIBエントリに新しいルーティングエントリを入力します。

ip route add default via 10.37.129.4 dev eth2 table 888

表888のルーティングエントリがどのように見えるかを見てみましょう。

ip route show table 888
  default via 10.37.129.4 dev eth2

私はあなたがその考えを理解したと思います。現在、特定のルーティングニーズに関しては、正確に何を達成しようとしているのかが明確ではありません。ルールテーブルを操作するときは、必ずルーティングキャッシュをフラッシュしてください。

ip route flush cache

iproute2アーキテクチャを使用すると、基本的にほぼすべてのFIBエントリをフィルタリングおよび変更できることに注意してください。ルールエントリは、次のようにfwmarksやu32分類子に基づいて作成することもできます(ポリシールーティングブックからの例):

tc filter add dev eth1 parent ffff: protocol ip prio 1 u32 
    match ip src 10.1.1.0/24 classid :1
ip rule add fwmark 1 table 1 prio 15000 realms 3/4
ip route add default via 192.168.1.1 table 1 src 192.168.1.254
ip route flush cache

ルールテーブルのエントリで問題が発生する場合は、何年も前に、システムを元のルーティングルールの状態に戻すための小さなbashスニペットを準備していました。

: ${KEEP:="local main default"}
while read prio rule; do
     continue=0
     for keep in ${KEEP}; do
         if [ "${rule//lookup ${keep}/}" != "${rule}" ]; then
             continue=1
         fi
     done
     if [ ${continue} -eq 0 ]; then
         ip rule del prio ${prio%%:*} ${rule//all/0/0}
     fi
done < <(ip rule show)

驚いたことに、iproute2を10年以上使用した後のようです。 の存在、まだ少数の人々だけが古典的な「壊れた」を超えた宇宙があることを知っているようです ifconfigなどのツール またはnetstat


Linux
  1. Linuxで静的IPアドレスを設定してルーティングテーブルを変更する方法

  2. Linux – Linuxカーネル3.2.0-23のルーティングテーブル「220」-汎用?

  3. Linux – Sshを介したX11転送?

  1. 方法:Linux General –一般的なIPTables

  2. Linux IPTables:着信および発信ルールの例 (SSH および HTTP)

  3. Linux IPTables:ファイアウォール ルールを追加する方法 (Allow SSH の例を使用)

  1. Linux IP ルーティングの基礎の紹介 (パート 1)

  2. Linux OS サービス「iptables」

  3. Linux でルーティング テーブルを表示する方法