すべてのネットワークトラフィックがデフォルトゲートウェイを通過するように強制

すべてのネットワークトラフィックがデフォルトゲートウェイを通過するように強制

コンピュータがあり、すべてのトラフィックがデフォルトゲートウェイを通過するように強制したいと思います。ローカルネットワークからのトラフィックも同様です。

そのインターフェイスの自動生成されたパスを削除して機能させましたが、これはネットワークスクリプトを介してRHEL / Centosでこれを永久に実行する方法ですか?

デフォルトのルーティングテーブルは次のとおりです。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

しかし、ネットワークを再起動した後に行われることを望みます。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

答え1

少なくとも、ゲートウェイへのパスは直接でなければなりません。

Kernel IP routing table
Destination     Gateway         Genmask           Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0           UG    0      0        0 eth0
192.168.1.1     0.0.0.0         255.255.255.255   U     0      0        0 eth0

/24 = 255.255.255.0最善の方法は、ローカルネットワークのネットマスクを変更/32 = 255.255.255.0し、ネットワークアドレスを「192.168.1.1」に設定することです。これにより、すべてのトラフィックがゲートウェイを通過する必要があります。

答え2

ネットワークスクリプトを介して目的のパスを削除する方法はないようです。私はこれが非常に一般的なユースケースではないと思いますが、実際には同じネットワーク上のサーバーが互いに通信できるようにしたくありません。

しかし、ネットワークが初期化された後に実行されるスクリプトが見つかりました。

このスクリプトは、/etc/sysconfig/network-scripts/ifup-post存在する場合は最後に呼び出されます。/sbin/ifup-local

だから、次の内容で一つを作りました。

#!/bin/bash
ip route delete 192.168.1.0/24

ネットワークを再起動した後、このローカルネットワークパスはありませんでした。

答え3

rhel / centosで変更を維持するには、/etc/sysconfig/static-routesキーワードで始まる行anyとそれに続く引数を含むファイルを生成しますroute add

ファイル内の/etc/sysconfig/network-scripts/ifcfg-<interface>1行を置き換えるか追加しますDEFROUTE="no"

関連情報