特定のIPアドレスからイーサネットインターフェイスを作成してpingを送信し、時には応答し、時には応答しないようにするにはどうすればよいですか?

特定のIPアドレスからイーサネットインターフェイスを作成してpingを送信し、時には応答し、時には応答しないようにするにはどうすればよいですか?

pingテストしてコマンドするためにいくつかの実験をしたいですfping(参照:Linuxの「ping -o」と同じ)が、これをテストするにはローカル仮想イーサネットインターフェイスが必要です。

私はping 10.0.0.1(または他のIP)を実行して失敗する可能性があるシナリオが欲しいです。その後、実行を続けている間、pingいくつかのコマンドを実行してインターフェイスを開いて渡します。つまり、出力がping変更されます。実行時これは、仮想デバイスが「アクティブ」状態になるためです。物理的なハードウェアを使用したくありません。

どうすればいいですか?

私の指示に従って努力しました(物理アダプタなしでコンピュータに仮想イーサネットインターフェイスを作成するには?)、しかし残念ながら実行後もsudo ip link set eth10 downeth10を介したpingはping 10.0.0.1まだ成功しています。sudo ip link delete eth10 type dummyダミー仮想デバイスを削除するために実行した後もping 10.0.0.1まだ成功しました。


これまでの機能的な回答の概要:

(2021年11月22日基準)

私の答えを含む3つの答えを受け取りました。3つの答えすべてが有効です。! :

  1. スティーブン・ハリス- ループバックサブインターフェースを使用してください(おそらくこれまでで最高の答えです)。
  2. 寄稿者: Hauke Larkin- iptablesを使う
  3. 私自身の答え- 仮想インターフェイスの使用

ベストアンサー1

Linuxでは、lo(ループバック)のサブインターフェースを使用してこれを実行できます。

たとえば、1つのウィンドウで私は実行します。

% ping 10.200.200.1
PING 10.200.200.1 (10.200.200.1) 56(84) bytes of data.

住所に関する情報がないため、回答が届きませんでした。

別ウィンドウで

% sudo ifconfig lo:100 10.200.200.1 netmask 255.255.255.0 up

これでpingが応答し始めます。

64 bytes from 10.200.200.1: icmp_seq=25 ttl=64 time=0.058 ms
64 bytes from 10.200.200.1: icmp_seq=26 ttl=64 time=0.035 ms
64 bytes from 10.200.200.1: icmp_seq=27 ttl=64 time=0.037 ms
64 bytes from 10.200.200.1: icmp_seq=28 ttl=64 time=0.040 ms

だから私はできます

% sudo ifconfig lo:100 down

そしてpingが再び動作を停止しました。

基本的に私たちがすることは、ループバックインターフェイスに「サブインターフェイス」を追加することです。この場合は呼び出しますが、->をlo:100選択できます。lo:1lo:255

サブインターフェイスは、実際に同じインターフェイスに複数のアドレスを割り当てる方法です。たとえば、アドレスを割り当てると、コンピュータはeth0:1物理インターフェイスに2つのアドレスを持ち、ネットワーク上の他のコンピュータは両方のアドレスからアクセスできます。これをloループバックに入れることは、テストマシンだけが追加のアドレスを知り、残りのネットワークは影響を受けないことを意味します。

パケットレベルでは、すべてのトラフィックlo:100lo。これは違うまったく新しいインターフェイスを作成し、インターフェイスへのトラフィックを分離します。

おすすめ記事