最終更新日: 2026-08-29
TOP(About this memo)) > 一覧(Linux) > ネットワーク関連コマンド
ネットワークそのものの仕組み(プロトコル、DNS、証明書など)についてはネットワークを参照。ここではLinux/macOS上で使うコマンドを扱う。
curl -s ifconfig.mecat /etc/hostsifconfig(net-toolsパッケージ)が非推奨となっており、ip コマンドへの移行が推奨されている。RHEL 7以降をはじめ、多くのディストリビューションでnet-toolsは既定でインストールされない。
ip addr … インターフェースとIPアドレスの一覧(ifconfig 相当)ip link … インターフェースの状態ip route … ルーティングテーブル(route -n 相当)ifconfig が標準のコマンド。ifconfig ではなく ipconfig。flags=... はインターフェースの状態を表すフラグ。ether に続くのがMACアドレス(インターフェースの固有アドレス)。inet が現在のIPv4アドレス(静的に設定したものかDHCPによる自動割り当て)。その後の netmask はサブネットマスクで、IPアドレスのどこまでがネットワーク部でどこからがホスト部かを定義する。inet6 が現在のIPv6アドレス。RX は受信について、TX は送信についての情報(パケット数、エラー数など)。lo0(loopback)
127.0.0.1 がIPアドレスとして自動で割り当てられる。gif0(generic tunnel interface)
stf0(6to4 tunnel interface)
en0(Ethernet 0)
en の後に続く番号は認識した順に割り振られる。手元のマシンのIPアドレスとMACアドレスは通常このインターフェースに表示される。ether xx:xx:xx:xx:xx:xx
inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
bridge0
vboxnet0、docker0
netstat もその一つで、代替は ss コマンドになる。
yum install net-tools
netstat -nl
-l 接続待ち(LISTEN)状態のソケットのみを表示-n 名前解決をせずに数字で表示netstat -tanp | grep -i listennetstat -rn … ルーティングテーブルの確認ss -t … TCPソケットを表示ss -t4 … IPv4のソケット(コネクション確立済(ESTABLISHED)のみ表示)ss -lt4 … リスニングソケット(LISTEN)を表示ss -at4 … リスニング状態も含めて全て表示ss -nt4 … 名前解決をせずポート番号を数字で表示ss -pt4 … ソケットを使っているプロセスを表示ss -u … UDPソケットを表示ss -lnu4 … UDPパケットの到着を待っているソケットを確認sudo lsof -i:8080 -P
java 4190 username 147u IPv6 0x372f84f782df4f69 0t0 TCP localhost:8080 (LISTEN)
-P を付けないと、ポート番号がサービス名に変換されて表示される。lsof -i -P … ネットワーク関連の全てを表示lsof -i @localhost -Plsof -iTCP:22 -Plsof -c nginx … nginxというプロセスが開いているファイルを確認lsof -i -P | grep LISTEN … LISTEN中のものだけ表示(netstat -nat | grep LISTEN でも同様)lsof -i -P | grep ESTABLISHEDlsof /path/to/mountpoint … 指定したパス配下を使っているプロセスを確認(アンマウントできない原因の特定などに使う)* の場合は 0.0.0.0 なので、同じネットワーク上のマシンからアクセスできる状態になっている。
*:ポート になる。rapportd というプロセスが表示されることがあるが、これはiPhone等とのハンドオフ通信用のサーバープロセス。curl -sS http://example.com
-s 進捗を表示しない / -S エラーは表示する-r)にダウンロードできる。curl -X POST -H "Content-Type: application/json" \
--data-binary @request.json \
https://api.example.com/echo | jq
curl -H "Content-Type: application/json" -d '{"email":"user@example.com","password":"password"}' http://localhost:8081/v0.1/login
Content-Type を指定しないと application/x-www-form-urlencoded として扱われる。curl -d email=user@example.com -d password=password http://localhost:8081/v0.2/login
curl -X GET "https://api.example.com/v1/items?id=2&lng=139.0000&lat=35.0000" \
-H "accept: application/json" \
-H "X-API-Key: <APIキー>"
curl -X POST "https://api.example.com/v1/items" \
-H "accept: application/json" \
-H "X-API-Key: <APIキー>" \
-H "Content-Type: multipart/form-data" \
-F "id=2" -F "content=sample" \
-F "image=@sample.png;type=image/png"
~/.bash_history 等)や ps の出力に残る。環境変数や --config で渡すか、少なくとも履歴に残さない運用にする。-i … レスポンスヘッダーとボディの両方を出力する。通常はこちらを使う。-I … HEADリクエストを送る。リクエストメソッドの指定を含んでいるため、-d と併用すると You can only select one HTTP request method! というエラーになる。-v … リクエスト・レスポンス両方のヘッダーを含む詳細を出力する。-X <メソッド> で指定する。
-d を付けた時点で自動的にPOSTになるなど、暗黙のデフォルトがある。意図しないメソッドにならないよう、明示的に指定した方が分かりやすい。