汎用ルーティングからソースルーティングに切り替えるには?

汎用ルーティングからソースルーティングに切り替えるには?

私はしなければならないソースルーティングより複雑な設定に入る前に、通常のパス(ネットワーク設定によって魔法のように生成されたパス)をソースパスに切り替えて、これがどのように機能するかを理解したいと思います。

目的は、特定のルーティングテーブルを作成し、ip ruleこのルーティングテーブルを介して自分のIPからトラフィックをルーティングする方法を設定することです(私が知っている限り、このdefaultテーブルではこれが起こります)。これはDebian 8にあり、IPに割り当てられたインターフェースがあります192.168.1.107

問題は、このレプリケーションが機能しないことです。

最初に新しいアイテムを作成しました。/etc/iproute2/rt_tables

200 NORMAL

その後、現在のルーティングテーブルをダンプしました。 - 作業ネットワーク用

root@debian-testing:~# ip route show table all
default via 192.168.1.1 dev eth0
169.254.0.0/16 dev eth0  scope link  metric 1000
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.107
broadcast 127.0.0.0 dev lo  table local  proto kernel  scope link  src 127.0.0.1
local 127.0.0.0/8 dev lo  table local  proto kernel  scope host  src 127.0.0.1
local 127.0.0.1 dev lo  table local  proto kernel  scope host  src 127.0.0.1
broadcast 127.255.255.255 dev lo  table local  proto kernel  scope link  src 127.0.0.1
broadcast 192.168.1.0 dev eth0  table local  proto kernel  scope link  src 192.168.1.107
local 192.168.1.107 dev eth0  table local  proto kernel  scope host  src 192.168.1.107
broadcast 192.168.1.255 dev eth0  table local  proto kernel  scope link  src 192.168.1.107

192.168.1.107実際のインターフェース()に関連する項目をテーブルに移動しました。 (以下は後で解析するファイルの内容です。NORMALt.txt

root@debian-testing:~# cat t.txt
local 127.0.0.0/8 dev lo  table local src 127.0.0.1
local 127.0.0.1 dev lo  table local  src 127.0.0.1
local 192.168.1.107 dev eth0  table NORMAL src 192.168.1.107
192.168.1.0/24 dev eth0 src 192.168.1.107 table NORMAL
broadcast 127.0.0.0 dev lo  table local src 127.0.0.1
broadcast 127.255.255.255 dev lo  table local  src 127.0.0.1
broadcast 192.168.1.0 dev eth0  table NORMAL src 192.168.1.107
broadcast 192.168.1.255 dev eth0  table NORMAL src 192.168.1.107
default via 192.168.1.1 dev eth0 table NORMAL

次に、既存のルートエントリをすべてフラッシュし、上記のエントリをロードし、着信パケットがこのテーブルを使用する必要があること192.168.1.107をシステムに通知します。NORMAL

root@debian-testing:~# ip route flush table all ; while read name; do echo "adding ${name}";ip route add ${name}; done < t.txt ; ip rule add from 192.168.0.107 table NORMAL
adding local 127.0.0.0/8 dev lo  table local src 127.0.0.1
RTNETLINK answers: Invalid argument
adding local 127.0.0.1 dev lo  table local  src 127.0.0.1
adding local 192.168.1.107 dev eth0  table NORMAL src 192.168.1.107
adding 192.168.1.0/24 dev eth0 src 192.168.1.107 table NORMAL
adding broadcast 127.0.0.0 dev lo  table local src 127.0.0.1
adding broadcast 127.255.255.255 dev lo  table local  src 127.0.0.1
adding broadcast 192.168.1.0 dev eth0  table NORMAL src 192.168.1.107
adding broadcast 192.168.1.255 dev eth0  table NORMAL src 192.168.1.107
adding default via 192.168.1.1 dev eth0 table NORMAL

残念ながら、ルーティングテーブルが再入力されたにもかかわらず、ローカルIPまたは外部ホストにアクセスできなくなりました。渡される唯一のpingはです127.0.0.1

root@debian-testing:~# ping 8.8.8.8
connect: Network is unreachable
root@debian-testing:~# ping 192.168.1.107
connect: Network is unreachable
root@debian-testing:~# ip route
root@debian-testing:~# ip route show table all
default via 192.168.1.1 dev eth0  table NORMAL 
broadcast 192.168.1.0 dev eth0  table NORMAL  scope link  src 192.168.1.107 
192.168.1.0/24 dev eth0  table NORMAL  scope link  src 192.168.1.107 
local 192.168.1.107 dev eth0  table NORMAL  scope host  src 192.168.1.107 
broadcast 192.168.1.255 dev eth0  table NORMAL  scope link  src 192.168.1.107 
broadcast 127.0.0.0 dev lo  table local  scope link  src 127.0.0.1 
local 127.0.0.1 dev lo  table local  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  table local  scope link  src 127.0.0.1 

この問題に対する解決策をどこで見つけるべきですか?私のアプローチは完全に正確ですか?

ベストアンサー1

通信用のインターフェイスを指定していないことを除いて、すべてが正しいようです。努力する

ping -I 192.168.1.107 -c1 8.8.8.8

動作する必要があります。

おすすめ記事