localhostでiptablesをテストする

localhostでiptablesをテストする

私は2つのインターフェイスloとeth0を持つLinuxシステムを持っていて、いくつかのTCPポートをブロックするいくつかのiptablesルールを持っています。

独自のポートをスキャンするプローブサービスを実装して、独自のファイアウォールルールをテストできますか?アイデアは、外部インターフェイスeth0でポートスキャンを実行しますが、内部的に実行することです。

rawソケットを使用してC ++でいくつかの基本的な実装を実行しましたが、最終的にパケットは常にloインターフェイスに流れ、eth0には何も表示されません。

ターゲットはソースアドレスと同じであるため、カーネルがショートカットを実行しているようです。この問題のアイデアはありますか?

ベストアンサー1

あなたはそれを使用することができますネットワーク 名前空間、ペアを使用してシステムに接続します。ワイズ相互作用。これにより、ホストと追加のネットワーク名前空間という2つのネットワークスタックが実際に存在します。スキャンするホストを作成するのは非常に安価です(仮想マシンよりはるかに多く、ネットワークのみが分離されています)。これを管理する最も簡単なコマンドは次のとおりです。ip netns(プロセスが使用されていない場合でも、ネットワークネームスペースへの参照をインストールしてネットワークネームスペースを実行し続けるように設計されています。)

ip netns add scanner
ip link add name veth0 type veth peer netns scanner name veth0
ip address add 192.0.2.2/24 dev veth0
ip -n scanner address add 192.0.2.3/24 dev veth0
ip link set veth0 up
ip -n scanner link set lo up #not really needed, but can avoid a few surprising results
ip -n scanner link set veth0 up
ip netns exec scanner /path/to/my/probing_service ...

これで、192.0.2.3から192.0.2.2をスキャンできます。ルオ。もちろん、これはすべてファイアウォールの規則によって異なります(IP、インターフェイス名、その両方、またはその他を調整する必要があります)。

おすすめ記事