覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

ネットワークで接続できない時の問題切り分け

「絵で見てわかるOS/ストレージ/ネットワーク」 を読んでまして、

ここだけはメモっておきたいなーと思ったのが、ネットワークで接続できない場合の代表的な切り分け方法でした。

自分なりの言葉に直してメモしておきます。



  • ping

    • ping {IPアドレス} を実行
      • コマンドが成功すれば、インターネット層 と ネットワークインターフェース層(物理レイヤー)まではOK
      • ただし、 ping を受け付けないようにしているネットワーク(機器)もあるため、その場合は他のコマンドで代用する必要がある。
      • 最初から、ping {ホスト名} を実行して上手くいけば、名前解決とインターネット層 までは問題ないはず
  • ルーティング

    • ping が成功しない場合は、接続対象としている目的のマシンと同一ネットワークに存在する他のマシンに対して ping を実行する。
      • または、トレースルートコマンド(tracerttraceroute) を実行する。
        • これにより、ルーティングが正しいかどうか分かる。
  • ポート

    • インターネット層までOKだった場合、netstat -ass -a でサーバ側で対象のポートが開いているかを確認する。
    • また、クライアント側から nc {ホスト名} -z {ポート番号}Test-NetConnection {ホスト名} -Port {ポート番号} などのコマンドで確認できる。
  • 変換装置

    • 目的のマシンまでの中継の中に、ファイアウォールや何らかのアドレス変換装置(NAT) が存在しないことを確認する。
      • これらは特定のポートを遮断したり、アドレスを書き換えたりするため、パケットが途中で意図しないものになっていることがある。
    • ファイアウォールで診断用のコマンド(ping で用いられるICMPプロトコル)を許可していないと切り分けできないことがあるので注意が必要。
  • 名前解決

    • 名前解決が怪しい場合は hostsファイル (UNIX系であれば /etc/hosts, Windows系であれば C:¥Windows¥system32¥drivers¥etc¥hosts など)の中を確認する。
      • ホスト名とIPアドレスの対応表が載っているので、これが悪さをしているケースもある。
    • nslookupResolve-DnsName などのコマンドを使って、DNSの情報が正しいかどうかも確認する。
  • アプリケーション層の確認

    • TCPのポートまで正しくたどり着けている場合、TCP/IP や ネットワークインターフェース層 などではなく、アプリケーションのレイヤーに問題がある。
    • アプリケーション(DBMSなど)の設定や、アプリケーションに渡しているユーザ名やパスワード、設定情報が間違っていないかを確認する。


補足

各レイヤーでのトラブルシューティング



関連エントリ

macOS - ipコマンドを使えるようにする

素の状態だとmacOSで ip コマンド使えないんですね。

Homebrewで iproute2mac をインストールして使えるようにしましょう。


とりあえず、念のためにHomebrewで iproute2mac を検索します。(以下コマンドを実行)

brew search iproute2mac


実際に実行した結果が以下。ちゃんと存在するようです。

yukiMacBook-Pro:~ yuki$ brew search iproute2mac
==> Formulae
iproute2mac


以下コマンドを実行してインストールします。

brew install iproute2mac


実際に実行した結果が以下。インストールが完了しました。

yukiMacBook-Pro:~ yuki$ brew install iproute2mac
==> Downloading https://github.com/brona/iproute2mac/releases/download/v1.2.3/iproute2mac-1.2.3.tar.gz
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/24814763/b7be4f00-ec67-11e9-8e0e-de
######################################################################## 100.0%
🍺  /usr/local/Cellar/iproute2mac/1.2.3: 6 files, 22.5KB, built in 5 seconds


これで、 ip コマンドが使えるようになりました。

というわけで念のために実行。

yukiMacBook-Pro:~ yuki$ ip help
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
       ip -V
where  OBJECT := { link | addr | route | neigh }
       OPTIONS := { -4 | -6 }

iproute2mac
Homepage: https://github.com/brona/iproute2mac
This is CLI wrapper for basic network utilities on Mac OS X inspired with iproute2 on Linux systems.
Provided functionality is limited and command output is not fully compatible with iproute2.
For advanced usage use netstat, ifconfig, ndp, arp, route and networksetup directly.


ip addr show の実行も問題なしです

yukiMacBook-Pro:~ yuki$ ip addr show
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    inet 127.0.0.1/8 lo0
    inet6 ::1/128
    inet6 fe80::1/64 scopeid 0x1
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 8c:86:90:08:e4:52
    inet6 fe80::18d3:99ad:79e9:c77f/64 secured scopeid 0x6
    inet6 240b:12:4e60:9800:101e:b5ab:84f2:9c38/64 autoconf secured
    inet6 240b:12:4e60:9800:9518:71c8:b3f:74f6/64 autoconf temporary
    inet 192.168.10.8/24 brd 192.168.10.255 en0
awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1484
    ether 5a:61:5d:87:05:90
    inet6 fe80::5870:5cff:fe78:590/64 scopeid 0x8
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
    inet6 fe80::2b9e:f27c:48de:6a0c/64 scopeid 0xc
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
    inet6 fe80::4a46:be16:5cd1:2038/64 scopeid 0xd



関連エントリ

macOS - gccでエラーが出た時の対処

MacBookでひさしびりに gcc 使おうとしたら invalid active developer path というエラーが出ました。

yukiMacBook-Pro:~ yuki$ gcc -v
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
yoshikawayuukinoMacBook-Pro:~ yuki$ xcode-select --install
xcode-select: note: install requested for command line developer tools


こうなった場合 ターミナルから以下を実行します

xcode-select --install

実際に実行すると

yukiMacBook-Pro:~ yuki$ xcode-select --install
xcode-select: note: install requested for command line developer tools

インストールするかどうかのダイアログが表示されます。「インストール」をクリックします。

f:id:nini_y:20200321132426p:plain


使用許諾契約のダイアログが表示されます。「同意する」をクリックします。

f:id:nini_y:20200321132452p:plain


最終的にインストール完了のダイアログが表示されます。「完了」をクリックします。

f:id:nini_y:20200321132907p:plain


これで gcc が使えるように復旧しました。(以下は gcc -v で動作確認しています)

yukiMacBook-Pro:~ yuki$ gcc -v
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/include/c++/4.2.1
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin

インターネット上で使われる英語の略語表現

インターネット、チャット、メールなどで使われる英語の略語表現の例です。
(自分用のメモです!。古いものも混ざっているかもしれません)


略語 フルスペル 意味
ASAP as soon as possible 出来るだけ早く。ただちに。
ATB All the best. では、ごきげんよう
BCNU Be seeing you. じゃあね。 またね。
BTW By the way ところで。話が変わるけど。
CU See you. またね
CU L8R See you later. またね。じゃあね。
FWIW for what it's worth 役に立つかどうか分からないけど
FYE for your entertainment あなたに楽しんでもらうために。面白いことを教えてあげるよ。
FYI for your information ご参考までに
HTH Hope the helps. これが役に立つといいのですが
IMHO in my humble opinion (謙遜して) 私見によると。わたしの見解では。
lol, LOL laughing out found 笑っちゃうよ。(笑)
Luv Love, またね。敬具。
Msg message メッセージ
NE any どんな...でも
NE1 anyone 誰でも
NO1 no one 誰も...ない
OTOH on the other hand その一方で。他方では。
PPL people 人々。あなたたち。
PS postscript 追伸
RTFM read the f●●king manual! マニュアルを読めよ!
RUQK Are you okay? 大丈夫?
THNQ Thank you. ありがとう
TIA Thanks in advice. よろしくお願いします。先にお礼を言っておきます。
TNX Thanks. ありがとう
u you あなた
I18N internationalization 国際化
2 to (前置詞)
4 for (前置詞)



参考書籍

速く・正確に読む ITエンジニアの英語

速く・正確に読む ITエンジニアの英語

  • 作者:平井 通宏
  • 出版社/メーカー: ジャパンタイムズ
  • 発売日: 2011/02/17
  • メディア: 単行本(ソフトカバー)

オブジェクトストレージ

オブジェクトストレージについての自分用のメモです!

操作対象リソース

リソース 説明
アカウント ストレージサービスを利⽤するテナント
コンテナ オブジェクトを保存する⼊れ物
オブジェクト コンテナに保存するファイルの実体


オブジェクトストレージAPI

アカウントに対する操作

  • アカウントが所有するコンテナの⼀覧を取得
  • アカウントが所有するコンテナ数、バイト数、メタデータを取得
  • アカウントのメタデータを設定・更新

コンテナに対する操作

  • コンテナを作成
  • 空のコンテナを削除
  • コンテナに含まれるオブジェクトの⼀覧を取得
  • コンテナに含まれるオブジェクト数、バイト数、メタデータを取得
  • コンテナのメタデータを設定・更新

オブジェクトに対する操作

  • オブジェクトをダウンロード
  • オブジェクトをアップロードして、メタデータを設定
  • オブジェクトを削除
  • オブジェクトを別の名前でコピー
  • オブジェクトのメタデータを取得
  • オブジェクトのメタデータを設定・更新