Linuxでのネットワークテスト

このメモは、自分用のベビーベッドから生まれました。 職場でネットワークのバグをキャッチする必要があります。 VPNトンネルの速度を確認する方法は? サーバーが応答しないのはなぜですか? またはping、しかし利用できません。 誰がチャンネル全体を急流で獲得しましたか? パッケージはどこに行きますか? メールクライアントが理解できないエラーを返しますが、実際に何が起きましたか? これらの質問や他の多くの質問は、ユーザーごとに定期的に発生します。 猫の下には、pingからngrepなどのエキゾチックなものまで、最新のすべてのディストリビューションに含まれるプログラムの説明があります。 また、写真(写真を呼び出すことができる場合)、コンソールからのダンプのコピー。





ping



rt94:~# ping -n -i 0.2 -s 512 -I eth0 ya.ru

PING ya.ru (93.158.134.8) from 10.0.94.2 eth0: 512(540) bytes of data.

520 bytes from 93.158.134.8: icmp_seq=1 ttl=59 time=17.5 ms

520 bytes from 93.158.134.8: icmp_seq=2 ttl=59 time=15.0 ms

520 bytes from 93.158.134.8: icmp_seq=3 ttl=59 time=14.7 ms

3/3 packets, 0% loss, min/avg/ewma/max = 14.757/15.777/16.899/17.512 ms

520 bytes from 93.158.134.8: icmp_seq=4 ttl=59 time=14.7 ms

^C









-nスイッチは、ドメイン名の代わりにIPアドレスを表示する必要があることを意味します。これは、IPでpingを実行する場合に役立ちます。ドメイン名の解決に時間がかかりません。 -iスイッチはパケットを送信する間隔を設定し、-sはパケットサイズを設定します。 サイズをMTUインターフェイスより大きくすることはできません。 -iキーと-sキーの組み合わせを使用すると、チャネルを任意の幅にロードできます。 -Iは、パケットが送信されるインターフェイスの名前を指定します。ルーティングテーブルをバイパスする必要がある場合に役立ちます。 3番目のパケットの後に行ったように、統計を取得するには、SIGQUITシグナルをpingに送信する必要があります。キーボードからCntr + \



トレースルート



rt94:~#traceroute -N 16 -q 1 -A ya.ru

traceroute to ya.ru (77.88.21.8), 30 hops max, 60 byte packets

1 10.94.171.1 (10.94.171.1) [AS65534] 1.402 ms

2 1.32.108.213.hl.ru (213.108.32.1) [AS47333] 1.618 ms

3 94.122.dsl.westcall.net (195.177.122.94) [AS20485/AS25408] 2.859 ms

4 b0-152.mrouter.r.westcall.net (84.52.109.161) [AS25408] 3.021 ms

5 GW-Yandex.retn.net (87.245.250.102) [AS9002] 3.266 ms

6 aluminium-vlan901.yandex.net (77.88.56.111) [AS13238] 14.037 ms

7 gallium-vlan901.yandex.net (77.88.56.126) [AS13238] 16.517 ms

8 hummer-vlan2.yandex.net (87.250.228.136) [AS13238] 16.443 ms

9 ya.ru (77.88.21.8) [AS13238] 15.809 ms









tracerouteは、リモートホストへのルートを示します。 デフォルトでは、パケットパス上の各ルーターを一度に1回と3回ポーリングするため、動作はかなり遅くなります。 各ホストの横に3つの応答時間、または応答しない場合は3つのアスタリスクが表示されます。 ただし、tracerouteは高速化できます。 -Nスイッチは、パケットパスが希望と呼ばれるステップ数を示し、1サイクルで検出し、-qはホストに送信されるリクエストの数を示します。 -Aスイッチは、自律システム番号を示します。 自律システム-1人のオペレーターに割り当てられたIPネットワークのブロック。



mtr



rt94:~#mtr ya.ru





このような画面につながります。

画像

mtrは、pingルートとトレースルートの交差点です。 チャンネルの垂れ下がりをはっきりと確認できます。 Debian型のディストリビューションでは、コンソールバージョンはmtr-tinyパッケージからインストールされます



tcpdump



ネットワーク上で何が起こっているかを詳しく調べると便利な場合があります。 どのパッケージが行き来するか。 たとえば、パケットがまだ送信され、ファイアウォールによってブロックされないようにするため。



それは、チームが



%nslookup ya.ru







Tcpdumpは隣接端末で実行されています

%sudo tcpdump -ni eth1 udp and port 53 and host 10.0.1.1

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes

13:09:39.038766 IP 10.94.171.10.41440 > 10.0.1.1.53: 24708+ A? ya.ru. (23)

13:09:39.040403 IP 10.0.1.1.53 > 10.94.171.10.41440: 24708 3/2/0 A 77.88.21.8,[|domain]







結論を解読します。 ホスト10.94.171.10のポート41440から10.0.1.1のポート53まで、クエリAはアドレスya.ruのレコードを探しました。 ポート53はDNSプロトコルで、次の行は10.0.1.1でのDNSサーバーの応答です

その名前にもかかわらず、tcpdumpは多くのネットワークプロトコルを知っています。 -iスイッチは、リッスンしているインターフェイスを示し、-nはIPアドレスのDNS名を要求しません。 さらにコマンドラインには、どのパッケージをキャッチするかの説明があります。 ここでは、フィルタリングコマンドについては説明しません。多くのコマンドがありますが、可能性にのみ焦点を当てます。 そのため、パケットをどのホストからどのホストに送信するか、どのポートからどのポートまで、さらにはポート範囲を選択することができます。 角かっこと論理語を使用してフィルターをグループ化できます。 マナでプロトコルicmp、arp、tcp、udpの詳細を選択します。



ngrep



すべてのパワーにもかかわらず、たとえばtcpdumpの機能では十分でない場合があります。たとえば、パッケージ内で何が起こるかを見るには、これは特にsmtp、imap、SIPなどのテキストプロトコルに当てはまります。 ここでNgrepが助けになります。

たとえば、/またはポート5060からのパケットをキャッチするには、NOTIFYという単語が存在します

rt94:~#ngrep -W byline -d eth0 NOTIFY port 5060

interface: eth0 (213.108.32.94/255.255.255.255)

filter: (ip or ip6) and ( port 5060 )

match: NOTIFY

#

U 213.108.33.128:5060 -> 85.114.2.44:5060

NOTIFY sip:85.114.2.44 SIP/2.0.

Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bK-2c32804.

From: 8126221842 <sip:0090315@85.114.2.44>;tag=4751f3b994a4aca8o0.

To: <sip:85.114.2.44>.

Call-ID: a85b76bd-dc9f6574@192.168.1.2.

CSeq: 22858 NOTIFY.

Max-Forwards: 70.

Event: keep-alive.

User-Agent: Linksys/PAP2T-5.1.6(LS).

Content-Length: 0.







-W bylineスイッチは、パッケージ内の改行によって出力をフォーマットします。 これは、例のように、メールプロトコルまたはSIPに非常に便利です。 パケットフィルタ文字列は、tcpdumpと同じ方法で形成されます。 探している部分文字列を指定しない場合、ngrepは一致するすべてのパッケージをダンプします。 パッケージ内にテキスト情報がない場合は、グリッド(#)で示されます



そして、それらが存在することを知る必要があるいくつかの簡単なユーティリティ。

ルーティングテーブルトラフィックのどのエントリを経由してIPアドレスに到達するかを確認する方法。



rt94:~# ip route get 10.94.171.10

10.94.171.10 dev eth1.173 src 10.94.171.1

cache mtu 1500 advmss 1460 hoplimit 64









誰が、または何がチャンネルを詰まらせているかを確認する方法は?

これには、ncursesに基づくインターフェースを備えたiptrafユーティリティがあります。 パラメータなしで起動すると、メニューが表示されます。

インターフェイスの要約統計を見るため

iptraf -d eth0





画像



接続統計用

iptraf -i eth0





画像



たとえば、VPNトンネルがあります。 幅の確認方法は? 最も簡単な方法は、iperfユーティリティです。 一方のホストで-sスイッチを使用して実行します。これは、デフォルトでポート5001でハングするサーバーになります。他方では、唯一のパラメーター-サーバーのアドレスで実行します。



画像



mii-tool



rt94:~# mii-tool eth0

eth0: negotiated 100baseTx-FD flow-control, link ok







net-toolsパッケージのユーティリティ。 物理リンクの速度を示します。 その助けを借りて、2枚のネットワークカードが速度について自動的に同意できず、結果として10 Mbps半二重のような問題が発生した場合に問題をキャッチできます。 まれな問題ですが、それでも発生します。



Nmapとhpingはレビューの範囲外でした。 kammentyでは、他の便利なプログラムへのリンクを待ちます。 おそらく、適切なブログに移行するのが理にかなっていますか?



All Articles