Movatterモバイル変換


[0]ホーム

URL:


developersIOproduced by Classmethod

ネットワークの状況を確認するコマンド色々

ネットワークの状況を確認するコマンド色々

2015.05.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

なんで相手に繋がらないの!?

サーバ管理していてよく起こる問題は、「なんで繋がらないの!?」ですよね。そこで、今回は基本的なネットワークをご紹介したいと思います。OSやツールのバージョンにより動作が異なりますので、それぞれ調べてみて頂ければと思います。今回は、Amazon Linux 2015.03を用いています。

ping

基本はpingですね。ICMPのにあるエコー要求/応答のpingを使って接続確認を行います。

$ ping yahoo.co.jpPING yahoo.co.jp (182.22.59.229) 56(84) bytes of data.64 bytes from f1.top.vip.ssk.yahoo.co.jp (182.22.59.229): icmp_seq=1 ttl=54 time=4.84 ms64 bytes from f1.top.vip.ssk.yahoo.co.jp (182.22.59.229): icmp_seq=2 ttl=54 time=5.03 ms64 bytes from f1.top.vip.ssk.yahoo.co.jp (182.22.59.229): icmp_seq=3 ttl=54 time=5.03 ms64 bytes from f1.top.vip.ssk.yahoo.co.jp (182.22.59.229): icmp_seq=4 ttl=54 time=5.60 ms64 bytes from f1.top.vip.ssk.yahoo.co.jp (182.22.59.229): icmp_seq=5 ttl=54 time=4.90 ms^C--- yahoo.co.jp ping statistics ---5 packets transmitted, 5 received, 0% packet loss, time 4703msrtt min/avg/max/mdev = 4.843/5.086/5.609/0.282 ms

しかし、相手のサーバはICMPを閉じている可能性があります。TCPやUDPを使って動作を確認したいはずです。

traceroute

tracerouteは、宛先までの経路を確認することができます。また、ICMP/UDP/TCPを使うことができます。TCPを指定できるのは今回始めて知りました(汗

TCP

到達しました。

$ sudo traceroute -T -q 1 -w 1 yahoo.co.jptraceroute to yahoo.co.jp (183.79.135.206), 30 hops max, 60 byte packets 1  * 2  27.0.0.210 (27.0.0.210)  9.334 ms 3  54.239.52.166 (54.239.52.166)  9.343 ms 4  * 5  * 6  * 7  f1.top.vip.kks.yahoo.co.jp (183.79.135.206)  15.428 ms

UDP

UDPは到達しませんでした。(ACKなし)

$ sudo traceroute -U -q 1 -w 1 yahoo.co.jptraceroute to yahoo.co.jp (183.79.135.206), 30 hops max, 60 byte packets 1  ec2-175-41-192-134.ap-northeast-1.compute.amazonaws.com (175.41.192.134)  0.513 ms 2  27.0.0.154 (27.0.0.154)  8.906 ms 3  54.239.52.166 (54.239.52.166)  9.349 ms 4  27.0.0.248 (27.0.0.248)  192.309 ms 5  54.239.52.145 (54.239.52.145)  8.648 ms 6  210.173.178.44 (210.173.178.44)  8.698 ms 7  124.83.228.225 (124.83.228.225)  8.732 ms 8  124.83.252.250 (124.83.252.250)  15.140 ms 9  *10  *11  *

ICMP

到達しました。

$ sudo traceroute -I -q 1 -w 1 yahoo.co.jptraceroute to yahoo.co.jp (182.22.59.229), 30 hops max, 60 byte packets 1  ec2-175-41-192-130.ap-northeast-1.compute.amazonaws.com (175.41.192.130)  0.623 ms 2  27.0.0.154 (27.0.0.154)  1.660 ms 3  27.0.0.136 (27.0.0.136)  1.703 ms 4  * 5  202.93.95.142 (202.93.95.142)  2.185 ms 6  *・・・・17  *18  f1.top.vip.ssk.yahoo.co.jp (182.22.59.229)  4.790 ms

mtr

mtr(My Traceroute)は、pingとtracerouteを足した様なツールです。経路とレイテンシを調べることができます。Amazon Linuxには標準で入っていませんので追加します。

$ sudo yum install mtr -y

それでは実行してみましょう。

$ sudo mtr yahoo.co.jp                                            My traceroute  [v0.75]ip-10-0-23-230 (0.0.0.0)                                                              Sun May 10 14:55:15 2015Resolver: Received error response 2. (server failure)er of fields   quit                                                                      Packets               Pings Host                                                               Loss%   Snt   Last   Avg  Best  Wrst StDev 1. ec2-175-41-192-132.ap-northeast-1.compute.amazonaws.com          0.0%    19    0.4   1.1   0.4   6.0   1.5 2. 27.0.0.210                                                       0.0%    19    9.4   9.4   9.3   9.5   0.0 3. 54.239.52.174                                                    0.0%    19    9.1   9.1   8.9  10.0   0.2 4. 54.239.52.140                                                    0.0%    19    9.4   9.6   8.9  12.2   0.8 5. 54.239.52.145                                                    0.0%    19    8.6   8.7   8.6   8.9   0.1 6. 210.173.178.44                                                   0.0%    19    8.6   8.8   8.6  10.7   0.5 7. 124.83.228.225                                                   0.0%    19    8.8   8.8   8.6   8.8   0.1 8. 124.83.252.250                                                   0.0%    19   15.1  15.1  15.0  15.2   0.0 9. 114.111.65.154                                                   0.0%    19   15.4  15.6  15.2  19.6   1.010. f1.top.vip.kks.yahoo.co.jp                                       0.0%    19   15.1  15.1  15.1  15.2   0.0

なかなか見やすいですね。TCP指定はできないようです。

tcptraceroute

tracerouteでTオプションが使えない場合には、tcptracerouteというツールもあります。早速使ってみましょう。

$ sudo yum install tcptraceroute -y --enablerepo epel

コマンドはtracerouteとほぼ同じです。

$ sudo tcptraceroute -q 1 -w 1 yahoo.co.jpSelected device eth0, address 10.0.23.230, port 45347 for outgoing packetsTracing the path to yahoo.co.jp (183.79.135.206) on TCP port 80 (http), 30 hops max 1  * 2  27.0.0.210  9.325 ms 3  54.239.52.174  11.114 ms 4  *・・・・10  *11  f1.top.vip.kks.yahoo.co.jp (183.79.135.206) [open]  15.374 ms

netstat

ルーティングテーブルを見て、デフォルトゲートウェイを調べたいときに使ったりします。

$ netstat -rnKernel IP routing tableDestination     Gateway         Genmask         Flags   MSS Window  irtt Iface0.0.0.0         10.0.23.1       0.0.0.0         UG        0 0          0 eth010.0.23.0       0.0.0.0         255.255.255.0   U         0 0          0 eth0169.254.169.254 0.0.0.0         255.255.255.255 UH        0 0          0 eth0

dig

宛先のドメインに関する情報を表示します。AレコーとやCNAMEなどを見ます。

$ dig yahoo.co.jp a; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.36.amzn1 <<>> yahoo.co.jp a;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49909;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:;yahoo.co.jp.INA;; ANSWER SECTION:yahoo.co.jp.300INA183.79.135.206yahoo.co.jp.300INA182.22.59.229;; Query time: 3 msec;; SERVER: 10.0.0.2#53(10.0.0.2);; WHEN: Sun May 10 15:35:46 2015;; MSG SIZE  rcvd: 61

ifconfig

ネットワークインタフェースやIPアドレスを調べます。

$ ifconfigeth0      Link encap:Ethernet  HWaddr 06:FA:3C:12:5D:A7            inet addr:10.0.23.230  Bcast:10.0.23.255  Mask:255.255.255.0          inet6 addr: fe80::4fa:3cff:fe12:5da7/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1          RX packets:115174 errors:0 dropped:0 overruns:0 frame:0          TX packets:36425 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:121159541 (115.5 MiB)  TX bytes:4079259 (3.8 MiB)lo        Link encap:Local Loopback            inet addr:127.0.0.1  Mask:255.0.0.0          inet6 addr: ::1/128 Scope:Host          UP LOOPBACK RUNNING  MTU:65536  Metric:1          RX packets:38 errors:0 dropped:0 overruns:0 frame:0          TX packets:38 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0           RX bytes:2096 (2.0 KiB)  TX bytes:2096 (2.0 KiB)

hosts

IPアドレスとホスト名をマッピングするファイルです。テスト用サーバを本番のドメインに見立てるためにhostsファイルを書いたりします。そのまま残ってしまっている場合もありますので見てみます。host名がおかしい場合もありますので同じく見てみましょう。

$ cat /etc/hostshosts        hosts.allow  hosts.deny $ hostnameip-10-0-23-230

iptables

何かパケットをフィルタする設定をしているかもしれません。

$ sudo iptables --listChain INPUT (policy ACCEPT)target     prot opt source               destination         Chain FORWARD (policy ACCEPT)target     prot opt source               destination         Chain OUTPUT (policy ACCEPT)target     prot opt source               destination

SecurityGroup

ここからはAWSのネットワーク周りです。SecurityGroupは、IPレンジとポート番号でIN/OUTを制御することができる仮想ファイルウォールです。AWSコマンドラインツールで確認してみましょう。

$ aws ec2 describe-security-groups --group-ids sg-4a78e9XX{    "SecurityGroups": [        {            "IpPermissionsEgress": [                {                    "IpProtocol": "-1",                     "IpRanges": [                        {                            "CidrIp": "0.0.0.0/0"                        }                    ],                     "UserIdGroupPairs": []                }            ],             "Description": "launch-wizard-5 created 2015-05-12T10:22:45.286+09:00",             "IpPermissions": [                {                    "ToPort": 22,                     "IpProtocol": "tcp",                     "IpRanges": [                        {                            "CidrIp": "0.0.0.0/0"                        }                    ],                     "UserIdGroupPairs": [],                     "FromPort": 22                }            ],             "GroupName": "launch-wizard-5",             "VpcId": "vpc-5a9f67XX",             "OwnerId": "XXXXXXXXXXXX",             "GroupId": "sg-4a78e9XX"        }    ]}

NetworkACL

こちらもAWSのネットワーク周りです。NetworkACLはルールベースのファイアウォールです。AWSコマンドラインツールで確認してみましょう。

$ aws ec2 describe-network-acls {    "NetworkAcls": [        {            "Associations": [                {                    "SubnetId": "subnet-6cc01dXX",                     "NetworkAclId": "acl-0865a0XX",                     "NetworkAclAssociationId": "aclassoc-7ebf2bXX"                },                 {                    "SubnetId": "subnet-c47dbbXX",                     "NetworkAclId": "acl-0865a0XX",                     "NetworkAclAssociationId": "aclassoc-808d25XX"                }            ],             "NetworkAclId": "acl-0865a0XX",             "VpcId": "vpc-5a9f67XX",             "Tags": [],             "Entries": [                {                    "CidrBlock": "0.0.0.0/0",                     "RuleNumber": 100,                     "Protocol": "-1",                     "Egress": true,                     "RuleAction": "allow"                },                 {                    "CidrBlock": "0.0.0.0/0",                     "RuleNumber": 32767,                     "Protocol": "-1",                     "Egress": true,                     "RuleAction": "deny"                },                 {                    "CidrBlock": "0.0.0.0/0",                     "RuleNumber": 100,                     "Protocol": "-1",                     "Egress": false,                     "RuleAction": "allow"                },                 {                    "CidrBlock": "0.0.0.0/0",                     "RuleNumber": 32767,                     "Protocol": "-1",                     "Egress": false,                     "RuleAction": "deny"                }            ],             "IsDefault": true        }    ]}

ルーティングテーブル

忘れてならないのはルーティングです。VPC内のパケットがどこに向けてルーティングしているのか確認しましょう。もちかしたら、インターネットゲートウェイを開いていなかったというオチがあるかもしれません。

$ aws ec2 describe-route-tables{    "RouteTables": [        {            "Associations": [                {                    "RouteTableAssociationId": "rtbassoc-eb5f9fXX",                     "Main": true,                     "RouteTableId": "rtb-9171b5XX"                }            ],             "RouteTableId": "rtb-9171b5fXX",             "VpcId": "vpc-5a9f67XX",             "PropagatingVgws": [],             "Tags": [],             "Routes": [                {                    "GatewayId": "local",                     "DestinationCidrBlock": "10.0.0.0/16",                     "State": "active",                     "Origin": "CreateRouteTable"                },                 {                    "GatewayId": "igw-dfd53dXX",                     "DestinationCidrBlock": "0.0.0.0/0",                     "State": "active",                     "Origin": "CreateRoute"                },                 {                    "GatewayId": "vpce-612dc8XX",                     "Origin": "CreateRoute",                     "State": "active"                }            ]        }    ]}

仮想NIC

AWSでは仮想NICの設定も重要です。EC2インスタンスにアタッチされている仮想NICの設定状況も見ましょう。

$ aws ec2 describe-network-interfaces{    "NetworkInterfaces": [        {            "Status": "in-use",             "MacAddress": "06:07:1c:6f:e6:XX",             "SourceDestCheck": true,             "VpcId": "vpc-5a9f67XX",             "Description": "Primary network interface",             "Association": {                "PublicIp": "52.68.XX.XX",                 "AssociationId": "eipassoc-5387f7XX",                 "PublicDnsName": "",                 "AllocationId": "eipalloc-280df5XX",                 "IpOwnerId": "XXXXXXXXXXXX"            },             "NetworkInterfaceId": "eni-321dc2XX",             "PrivateIpAddresses": [                {                    "Association": {                        "PublicIp": "52.68.XX.XX",                         "AssociationId": "eipassoc-5387f7XX",                         "PublicDnsName": "",                         "AllocationId": "eipalloc-280df5XX",                         "IpOwnerId": "XXXXXXXXXXXX"                    },                     "Primary": true,                     "PrivateIpAddress": "10.0.23.XX"                }            ],             "RequesterManaged": false,             "AvailabilityZone": "ap-northeast-1b",             "Attachment": {                "Status": "attached",                 "DeviceIndex": 0,                 "AttachTime": "2015-05-12T01:22:55.000Z",                 "InstanceId": "i-2289baXX",                 "DeleteOnTermination": true,                 "AttachmentId": "eni-attach-a2e51aXX",                 "InstanceOwnerId": "XXXXXXXXXXXX"            },             "Groups": [                {                    "GroupName": "launch-wizard-5",                     "GroupId": "sg-4a78e9XX"                }            ],             "SubnetId": "subnet-6cc01dXX",             "OwnerId": "XXXXXXXXXXXX",             "TagSet": [],             "PrivateIpAddress": "10.0.23.XX"        }    ]}

まとめ

AWSのネットワーク周りで繋がらなくて困ったら、OSの基本コマンドによる疎通の確認をはじめ、AWSの基本的なネットワーク設定を確認することで、設定漏れや間違いなどを早期に発見することができるのではと思います。

この記事をシェアする

FacebookHatena blogX

EVENTS

セミナー一覧会社説明会一覧勉強会一覧

関連記事

[レポート]Kiro × MCP × Dynatrace:AIエージェントによるクラウドセキュリティ自動修復 #SEC217-S#AWSreInvent
いそま
2025.12.17
【アップデート】Amazon Lex の Assisted NLU に インテントの曖昧性解消 (Intent Disambiguation) が追加されました!
フニ
2025.12.16
【登壇レポート】「新サービス紹介 AWS DevOps Agent(プレビュー) ってなんぞや?」というタイトルで登壇しました #AWSreInvent #cmregrowth
くろすけ
2025.12.16
ACM 証明書の更新案内メールが届かなくなったのはなぜですか
大高大輔
2025.12.16

[8]ページ先頭

©2009-2025 Movatter.jp