AWS NATインスタンスなど、LinuxでiptablesによりNATマシンを作成することがある。 ルータ、FWなどのNW機器の操作経験があるネットワークエンジニアであれば、コネクション状態を確認したいケースが多いと思う。
netstat-nat
コマンドを使用してshow xlate
のように、LinuxでもNAT(NAPT/PAT)コネクション状態を確認する。netstat
のオプションではなく、netstat-nat
コマンド。
- netstat-nat をインストールする
- netstat-natコマンド
- NATゲートウェイのコネクション確認
- まとめ - iptablesでNATコネクション状態を確認する(AWS NATインスタンスなど)
netstat-nat
をインストールする
標準のnetstat
ではiptablesによるNATコネクションは表示されない。
# netstat -natu Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 172.xx.x.x:22 xx.xxx.xx.xxx:61476 ESTABLISHED tcp 0 216 172.xx.x.x:22 xx.xxx.xx.xxx:61179 ESTABLISHED tcp 0 0 :::22 :::* LISTEN udp 0 0 0.0.0.0:68 0.0.0.0:* udp 0 0 172.xx.x.x:123 0.0.0.0:* udp 0 0 127.0.0.1:123 0.0.0.0:* udp 0 0 0.0.0.0:123 0.0.0.0:*
Yumでnetstat-nat
をインストールする。EPEL未インストールの場合はyum install epel-release
。
[root@ip-x-x-x-x ~]# yum install netstat-nat --enablerepo=epel Loaded plugins: priorities, update-motd, upgrade-helper amzn-main | 2.1 kB 00:00:00 amzn-updates | 2.5 kB 00:00:00 1060 packages excluded due to repository priority protections Resolving Dependencies --> Running transaction check ---> Package netstat-nat.x86_64 0:1.4.10-1.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ================================================================ Package Arch Version Repository Size ================================================================ Installing: netstat-nat x86_64 1.4.10-1.el6 epel 22 k Transaction Summary ================================================================ Install 1 Package Total download size: 22 k Installed size: 45 k Is this ok [y/d/N]: y Downloading packages: warning: /var/cache/yum/x86_64/latest/epel/packages/netstat-nat-1.4.10-1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY Public key for netstat-nat-1.4.10-1.el6.x86_64.rpm is not installed netstat-nat-1.4.10-1.el6.x86_64.rpm | 22 kB 00:00:00 Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 Importing GPG key 0x0608B895: Userid : "EPEL (6) <epel@fedoraproject.org>" Fingerprint: 8c3b e96a f230 9184 da5c 0dae 3b49 df2a 0608 b895 Package : epel-release-6-8.9.amzn1.noarch (installed) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 Is this ok [y/N]: y Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : netstat-nat-1.4.10-1.el6.x86_64 1/1 Verifying : netstat-nat-1.4.10-1.el6.x86_64 1/1 Installed: netstat-nat.x86_64 0:1.4.10-1.el6 Complete!
netstat-nat
コマンド
netstat-nat
の詳細はこちら
https://www.tweegy.nl/projects/netstat-nat/
# netstat-nat --help netstat-nat: invalid option -- '-' args: -h: displays this help -n: don't resolve host/portnames -p <protocol> : display connections by protocol -s <source-host> : display connections by source -d <destination-host>: display connections by destination -S: display SNAT connections -D: display DNAT connections (default: SNAT & DNAT) -L: display only connections to NAT box itself (doesn't show SNAT & DNAT) -R: display only connections routed through the NAT box (doesn't show SNAT & DNAT) -x: extended hostnames view -r src | dst | src-port | dst-port | state : sort connections -o: strip output header -N: display NAT box connection information (only valid with SNAT & DNAT) -v: print version netstat-nat [-S|-D|-L|-R] [-no] netstat-nat [-nxo]
-n
オプションでDNSによる名前解決を無効化し、-N
オプションでNATインスタンスで変換、マッピングされたIPアドレス:ポート番号
を表示する。
通信をしながら確認すると、以下のように状態遷移していくことが確認できる。192.168.0.10
: 内部インスタンス、172.16.0.10
: NATインスタンス。
# netstat-nat -nN Proto NATed Address NAT-host Address Destination Address State tcp 192.168.0.10:51258 172.16.0.10:51258 93.184.216.34:443 ESTABLISHED tcp 192.168.0.10:51330 172.16.0.10:51330 93.184.216.34:443 SYN_SENT tcp 192.168.0.10:51278 172.16.0.10:51278 93.184.216.34:443 CLOSE # netstat-nat -nN Proto NATed Address NAT-host Address Destination Address State tcp 192.168.0.10:51258 172.16.0.10:51258 93.184.216.34:443 CLOSE tcp 192.168.0.10:51330 172.16.0.10:51330 93.184.216.34:443 ESTABLISHED tcp 192.168.0.10:51278 172.16.0.10:51278 93.184.216.34:443 CLOSE # netstat-nat -nN Proto NATed Address NAT-host Address Destination Address State tcp 192.168.0.10:51258 172.16.0.10:51258 93.184.216.34:443 CLOSE tcp 192.168.0.10:51330 172.16.0.10:51330 93.184.216.34:443 CLOSE tcp 192.168.0.10:51278 172.16.0.10:51278 93.184.216.34:443 CLOSE
NATゲートウェイのコネクション確認
NATインスタンスではなく、NATゲートウェイを使用する場合は、Cloud Watchから状態を確認できる。NATゲートウェイの方が運用面やパフォーマンスではメリットが多いかもしれない。
まとめ - iptablesでNATコネクション状態を確認する(AWS NATインスタンスなど)
netstat-nat
コマンドを使用することで、Linux (AWS NATインスタンス) にてiptablesでNAT(NAPT/PAT)されたコネクションの状態を確認することができた。