トラフィックルーティングにDNSを使用する

トラフィックルーティングにDNSを使用する

ゲートウェイマシンが2台あります。 1つのdebian(デフォルト - 192.168.1.1)、1つのcentos(バックアップ192.168.1.2)。 「メインネットワーク」を介して2つのネットワーク、つまり1つのLANと1つのWANがあり、LAN上のISP1とPPP(デフォルトでは3Gスティックを介して)を介してISP2に「バックアップ」されます。

問題は、ISP1が悪天候やその他の理由で「死んだ」パケットが失われたときに手動で設定できるようにしたいことです。確認するLANステーションのインターネットトラフィックはISP2を通過し、残りのトラフィックはISP1に残ります。したがって、192.168.1.3がGW1 / ISP1を介して正常にオンラインになり、ある時点で手動でGW2 / ISP2に切り替えたいとします。サイトネットワーク設定をできるだけ「接触」せずにこれを行う必要があります。これにより、ローカルネットワークへの接続が失われます。カント発生する。

192.168.1.3(WinXP)デフォルトゲートウェイが192.168.1.1のDNSサーバーとDHCPを介してISP1に設定された2つのDNSサーバー

DNAT(外部IPを192.168.1.2に置き換えているように見えるため、通信が中断される)とIPルーティング(ローカルネットワークトラフィックを混乱させる)を使用してさまざまなソリューションを試しました。

私はiptables DNATソリューションで明白なものを見ることができないと思いますが、指をつけることはできません。ちなみに、行は次のようになります。

iptables -t nat -A PREROUTING -s 192.168.1.3 ! -d 192.168.1.0/8 -j DNAT --to 192.168.1.2

IP ルーティングは次のように実行されます。

ip route add 192.168.1.3 via 192.168.1.2

GW1(192.168.1.1)ですべて完了しました。

GW2でIP転送が有効になりました(明らかにGW1のルーティングとNAT自体はすべて正常です)。

GW2のiptablesルールは、これが正常であるかどうかわからないので、(iptables-saveで)次のようになります。

*nat
:PREROUTING ACCEPT [21038:1379326]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [302:19015]
-A POSTROUTING -o ppp0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [61306:4073979]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [27660:3745654]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A FORWARD -s 192.168.1.3/32 -j ACCEPT
-A FORWARD -d 192.168.1.3/32 -j ACCEPT
COMMIT

ありがとうございます。

ベストアンサー1

Debianルーター(デフォルトルーター - 192.168.1.1)は、NATトラフィックをバックアップルーターにリダイレクトしようとしないでください。せいぜいデュアルNATが発生し(バックアップルータがppp0その規則に従って再びNATを実行するためMASQUERADE)、最悪の場合、戻りトラフィックがフォールバックを取得できないようにIPアドレスを書き換えます。

最も簡単なオプションはVRRPを使用することです。 2 つのルータ間で共有される仮想ゲートウェイアドレスを設定します。マスタールーターはデフォルトでマスタールーターとして機能しますが、独自のインターネット接続が利用できない場合に終了するように優先順位を設定します。 Linuxでは、以下を使用します。VRRPDVRRPを実装します。次に、切り替えたいワークステーションのデフォルトゲートウェイを仮想ゲートウェイアドレスに設定し、残りはデフォルトルータの実際のIPアドレスを指すようにします。

実際にこれを手動で実行するためにVRRPも必要ありません。仮想ゲートウェイアドレスを手動で管理し、それをプライマリルーター(ip addr del x.y.z.w/qq dev eth?)から削除してから、別のルーター()に追加するだけですip addr add x.y.z.w/qq dev eth?。ただし、実際のVRRPはIPアドレスに加えてMACアドレスも管理しているため、手動でルーティングする場合(末梢を意図せず)、一部のARP問題が発生する可能性があります。

もう1つの方法は、代替ルータを指すDebianルータに静的デフォルトルートをインストールすることです。ポリシールーティング(有効ip rule)を使用して、特定の送信元IPアドレスを持つパケットにのみこのルートを適用できます。このパスは、WANの外部のデフォルトパスよりも高いメトリックを持つ必要があります。したがって、WAN の外部にデフォルト ルートが存在する場合、そのルートは排他的に使用されます。そうでない場合、トラフィックは代替デフォルト ルートに従います。このデフォルトパスにより、ICMPリダイレクトがワークステーションに送信される可能性があります。プライマリルータが着信および発信トラフィックを別のルータにリダイレクトするタスクを処理できることを前提として、ワークステーションが戻るとすぐにプライマリルートにフォールバックするようにこれらの機能を無効にできます。 ( /proc/sys/net/ipv4/conf/<intf>/send_redirects)

おすすめ記事