ネットワーク調査時によく使うけどいつも忘れるコマンドメモ

Cheat Sheet
================================

たまに使うけど、すぐ忘れるコマンドのメモを公開。内容の粒度はコマンドごとにマチマチですが、参考までに。
ちょくちょく更新していきます。

ネットワーク調査でよく使うコマンド
------------------------------------------------------


### 自分自身の空いているポートを調べる

```bash:command
netstat -nap
```

もしくは

```bash:command
nmap localhost
```

### プロセスが使用中のポートの確認

sshdはたいていノイズになるので、grepで外している。

```bash:command
sudo lsof -i -P | sort | grep -v sshd
```

### DNSからドメイン情報を取得できているか

```bash:command
nslookup www.rescale.com
```

```bash:command
dig www.rescale.com
```

### ネットワークの経路をチェックする

```bash:command
traceroute -n www.rescale.com
```

### 通信の内容をキャプチャー

**tcpdump例**


```bash:command
tcpdump -n -i en0 src port 80 or src port 443
```

**tshark例**

ポート6818に関して、長期でログ取得したい。そのためバックグラウンドで実行しファイルに落としたい。

```bash:command
nohup tshark -i ens5 -f "port 6818" -w port-6818.cap &
```

複数の条件で確認する。

```bash:command
tshark -ta -n -w ens5.cap -i ens5 "udp || arp || port 6818"
```

上記ファイルを確認する。

```bash:command
tshark -r port-6818.cap -ta
```

`-ta`で時間を表示し、ipで絞り込む。`-n`ですべての名前解決を無効にする。

```bash:command
tshark -r port-6818.cap -ta -n 'ip.addr==10.0.1.102'
```

### ルートテーブルの確認

`routel` が一番見やすそう

```bash:command
route -n
```

```bash:command
ip route show
ip route show table all
ip rule show
```

```
routel
```

### レイテンシーの確認

pingでも良いが、[ここを参照](https://cloud.google.com/blog/ja/products/networking/using-netperf-and-ping-to-measure-network-latency)すると良い


```bash:command
ping ${IP_ADDR} -c 10
```



### 自分のPublic アドレスの確認

```bash:command
curl ipecho.net/plain; echo
```

### iptablesの設定確認

```bash:command
sudo iptables -L -n
```

```bash:response
sudo: unable to resolve host ip-172-20-1-145
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            172.20.1.145         tcp dpt:443

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
```

```bash:command
sudo iptables -L -n -t nat
```

```bash:response
sudo: unable to resolve host ip-172-20-1-145
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443 to:172.20.1.145:22

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
```

443からのアクセスを自分自身の22番に変更する例

```bash:command
sudo iptables -L -t nat
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 22
```

FlexLMのライセンスサーバとの疎通
---------------------------

### FlexLMライセンスサーバとの疎通

```bash:command
nc -v ${LICENCE_SERVER_IP} ${LICENCE_SERVER_PORT}
```
### FlexLMライセンス使用状況取得

```bash:command
LICENSE_FILE=<'ライセンスファイル'>
lmutil lmstat -a -c ${LICENSE_FILE}
```

```bash:command
LICENSE_SERVER=<'ライセンスファイル'>
LICENSE_PORT=<'ライセンスポート'>
lmutil lmstat -a -c ${LICENSE_PORT}@${LICENSE_SERVER}
```

その他、関連コマンド
---------------------------

### ネットワークカードの認識確認

```command:bash
sudo lshw -short -class network
```

```command:bash
ip iddr show
```



### 参考

- https://cloud.google.com/blog/ja/products/networking/using-netperf-and-ping-to-measure-network-latency
- https://qiita.com/testnin2/items/7490ff01a4fe1c7ad61f