
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)されたコネクションの状態を確認することができた。