2つのIP範囲/ 1つのNICまたは1つのIP範囲がローカルパスの前にデフォルトパスに従う理由

2つのIP範囲/ 1つのNICまたは1つのIP範囲がローカルパスの前にデフォルトパスに従う理由

下部に更新

私はCentosをルーターとして使用し、職場でルーティングシステムを交換しました。データを送信するための2つのルータがあります。ほとんどの場合、効果があります。 1つのルーターには、同じネットワークカード(eth1)に2つのネットワーク範囲があります。あるスコープにサーバーがあり、他のスコープの誰もSSHを介してサーバーに接続できません。しかし、pingは可能です。

クイックレイアウトは次のとおりです。

インターネットリンク:

eth0 - 192.168.144.50 (link between routers)
eth1 - 10.10.10.254 - 255.255.254.0 (10.10.10.x and 10.10.11.x ranges)
eth2 - internet

ルーター2:

eth0 - 192.168.144.24 (link between routers)
eth1 - 98.0.0.1 & 10.98.0.1 ranges (yes, I know 98.0.0.0 is not for private use, this is a legacy setup that we haven't been able to remove yet)

ここにいるIPルーティング印刷する:

98.0.0.0/24 dev eth1  proto kernel  scope link  src 98.0.0.1
192.168.144.0/24 dev eth0  proto kernel  scope link  src 192.168.144.24
10.98.0.0/24 dev eth1  proto kernel  scope link  src 10.98.0.1
default via 192.168.144.50 dev eth0

サーバーは98.0.0.6です。 10.98.0.165で動作するノートパソコンがあります。 ping 98.0.0.6 コマンドに対する応答を受け取りました。しかし、sshで接続しようとすると何も得られません。私のルーターでいくつかのtcpdumpコマンドを実行して、sshコマンドパケットがラップトップからインターネットルーター(192.168.144.50)に送信され、正しいルーターに再送信されることがわかりました。

私のiptablesリストは空です。上から私のIPルーティング出力を見ることができます。どんなアイデアがありますか?私は一日中これだけ見つめていた。私の理解は、ルータがパケットを受信するために98.0.0.6に対してeth1を介してパケットを再送信する必要があることです。ありがとうございます。

編集:はねかける部分を傷付けます。私はSSHセッションからルーターへのSSHトラフィックを見ていることに気づき、それを私のSSH要求に起因しました。

修正する 設定を外しました。 98.0.0.xはeth1にあり、10.98.0.xはeth2にあります。しかし、私が見たことはあまり意味がありませんでした。

10.98.0.165 ノートブックから 98.0.0.6 サーバーに ping を実行すると応答を受け取ります。行く道は変だった。デフォルトルートを介して192.168.144.50(インターネットルーター)に移動し、98.0.0.6に戻ります。 (インターネットルータのeth0にあるtcpdumpがこれを発見しました)

おいしい食べ物。このプロジェクトを開始したとき、私はポリシールーティングを介して2つのインターネットプロバイダを操作しようとしました。これを行うことができる関連項目はありますか?

これは私が更新した2番目のルーターのレイアウトです。

eth0 - 192.168.144.24 (router link)
eth1 - 98.0.0.1 / 24
eth2 - 10.98.0.1 /24

そしてIPパスの表示

98.0.0.0/24 dev eth1  proto kernel  scope link  src 98.0.0.1
192.168.144.0/24 dev eth0  proto kernel  scope link  src 192.168.144.24
10.98.0.0/24 dev eth2  proto kernel  scope link  src 10.98.0.1
default via 192.168.144.50 dev eth0

答え1

サーバーがping応答を受け取ると言ったように、iptablesルールがサーバーに適用され、サーバーがssh接続を切断する可能性があります。

サーバーの iptables ルールを表示する権限がある場合は確認してください。 SSH接続を削除するルールがあります。

答え2

私は答えを見つけました。各ネットワークカードにNATを追加しました。

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

それをやってみると、すべてがうまく機能し始めました。みんなありがとうございます!

関連情報