この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
。