
ルーティングテーブルに連絡した後、監視し続け、連絡を取ると終了するVPNクライアントがあります。これはノートブックなどのエンドポイントに必要な設定です。
小型PCをVPNエンドポイントとして使用し、それを介してLAN(192.168.0.0/24)の他のコンピュータをルーティングしたいと思います。
ルーティングテーブルに触れることはできず、すべてのパケットがVPNデバイスを介して強制的に送信されるため、192.168.0.0ネットワークからデバイスへのパケットのPOSTROUTEに役立つとtun0
思いました。iptables
eth1
eth1
しかし、一度終了すると、IPtoMACはすでに宛先ネットワークにあるため、IPtoMACを解決する必要があり、パケットが到着する前にすでに解析されているかどうかがわからないため、これがどのように機能するのかわかりません。 。
どのようなヒントがありますか?
答え1
もう情報を提供していないので、最善の答えが何であるかわかりません。
だから私は意図的にルーティングテーブルを変更できないことを無視しながらいくつかのガイドラインを提供しようとしました。 (私のアドバイスを読んだら、その理由を理解するでしょう。)
VPNクライアントとどここれはカーネルのForwarding Information Base(FIB)に接続され、VPNのFIB監視または式のルーティングテーブルの使用はルールテーブルでのみ発生するため、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)
驚くべきことに、存在してから10年以上経っても、依然として情景を超えた宇宙がiproute2
あることを知っている人はほんの一握りです。「壊れた」ifconfig
またはのようなツールnetstat
。