私はしなければならないソースルーティングより複雑な設定に入る前に、通常のパス(ネットワーク設定によって魔法のように生成されたパス)をソースパスに切り替えて、これがどのように機能するかを理解したいと思います。
目的は、特定のルーティングテーブルを作成し、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
実際のインターフェース()に関連する項目をテーブルに移動しました。 (以下は後で解析するファイルの内容です。NORMAL
)t.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
動作する必要があります。