iptablesによるルーティング

iptablesによるルーティング

ルーティングテーブルに連絡した後、監視し続け、連絡を取ると終了するVPNクライアントがあります。これはノートブックなどのエンドポイントに必要な設定です。

小型PCをVPNエンドポイントとして使用し、それを介してLAN(192.168.0.0/24)の他のコンピュータをルーティングしたいと思います。

ルーティングテーブルに触れることはできず、すべてのパケットがVPNデバイスを介して強制的に送信されるため、192.168.0.0ネットワークからデバイスへのパケットのPOSTROUTEに役立つとtun0思いました。iptableseth1

eth1しかし、一度終了すると、IPtoMACはすでに宛先ネットワークにあるため、IPtoMACを解決する必要があり、パケットが到着する前にすでに解析されているかどうかがわからないため、これがどのように機能するのかわかりません。 。

どのようなヒントがありますか?

ベストアンサー1

もう情報を提供していないので、最善の答えが何であるかわかりません。

だから私は意図的にルーティングテーブルを変更できないことを無視しながらいくつかのガイドラインを提供しようとしました。 (私のアドバイスを読んだら、その理由を理解するでしょう。)

VPNクライアントとどここれはカーネルのForwarding Information Base(FIB)に接続され、VPNのFIB監視または式のルーティングテーブルの使用はルールテーブルでのみ発生するため、localmainが良いかもしれません。次のコマンドを使用してルーティングルールを確認できます。

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ますmaindefaultmainnetstat -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)

驚くべきことに、存在してから10年以上経っても、依然として情景を超えた宇宙がiproute2あることを知っている人はほんの一握りです。「壊れた」ifconfigまたはのようなツールnetstat

おすすめ記事