ping
テストしてコマンドするためにいくつかの実験をしたいですfping
(参照:Linuxの「ping -o」と同じ)が、これをテストするにはローカル仮想イーサネットインターフェイスが必要です。
私はping 10.0.0.1
(または他のIP)を実行して失敗する可能性があるシナリオが欲しいです。その後、実行を続けている間、ping
いくつかのコマンドを実行してインターフェイスを開いて渡します。つまり、出力がping
変更されます。実行時これは、仮想デバイスが「アクティブ」状態になるためです。物理的なハードウェアを使用したくありません。
どうすればいいですか?
私の指示に従って努力しました(物理アダプタなしでコンピュータに仮想イーサネットインターフェイスを作成するには?)、しかし残念ながら実行後もsudo ip link set eth10 down
eth10を介したpingはping 10.0.0.1
まだ成功しています。sudo ip link delete eth10 type dummy
ダミー仮想デバイスを削除するために実行した後もping 10.0.0.1
まだ成功しました。
これまでの機能的な回答の概要:
(2021年11月22日基準)
私の答えを含む3つの答えを受け取りました。3つの答えすべてが有効です。! :
- スティーブン・ハリス- ループバックサブインターフェースを使用してください(おそらくこれまでで最高の答えです)。
- 寄稿者: Hauke Larkin- iptablesを使う
- 私自身の答え- 仮想インターフェイスの使用
ベストアンサー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:1
lo:255
サブインターフェイスは、実際に同じインターフェイスに複数のアドレスを割り当てる方法です。たとえば、アドレスを割り当てると、コンピュータはeth0:1
物理インターフェイスに2つのアドレスを持ち、ネットワーク上の他のコンピュータは両方のアドレスからアクセスできます。これをlo
ループバックに入れることは、テストマシンだけが追加のアドレスを知り、残りのネットワークは影響を受けないことを意味します。
パケットレベルでは、すべてのトラフィックlo:100
はlo
。これは違う偽まったく新しいインターフェイスを作成し、インターフェイスへのトラフィックを分離します。