まず、NATインスタンス(EC2)はAmazon VPCのNATインスタンスを作ってみる(iptables編)の記事で紹介したように
作ることができます。

このNATインスタンスを通過する通信をログに出力する方法です。
(様々な方法があると思いますがiptablesを使った方法になります)

○一旦iptablesを初期化

# iptables -t nat -F
# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

○iptablesの設定(ログ出力とNAT)

# iptables -t nat -A POSTROUTING -j LOG
# iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0 -j MASQUERADE
# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning
MASQUERADE all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

○出力ログ(syslog)の確認

Dec 23 21:54:49 ip-10-0-8-10 kernel: IN= OUT=eth0 SRC=xxx.xxx.xxx.xxx DST=27.0.2.83 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=29593 DF PROTO=TCP SPT=48918 DPT=80 WINDOW=14600 RES=0x00 SYN URGP=0 
Dec 23 21:54:50 ip-10-0-8-10 kernel: IN= OUT=eth0 SRC=xxx.xxx.xxx.xxx DST=27.0.2.83 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=10399 DF PROTO=TCP SPT=48919 DPT=80 WINDOW=14600 RES=0x00 SYN URGP=0
Dec 23 21:54:51 ip-10-0-8-10 kernel: IN= OUT=eth0 SRC=xxx.xxx.xxx.xxx DST=27.0.2.83 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=51974 DF PROTO=TCP SPT=48920 DPT=80 WINDOW=14600 RES=0x00 SYN URGP=0

○iptablesの設定の永続化

# /etc/init.d/iptables save
iptables: ファイアウォールのルールを /etc/sysconfig/iptable[ OK ]中:
# /etc/init.d/iptables restart
iptables: ファイアウォールルールを消去中: [ OK ]
iptables: チェインをポリシー ACCEPT へ設定中filter nat [ OK ]
iptables: モジュールを取り外し中: [ OK ]
iptables: ファイアウォールルールを適用中: [ OK ]
# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
LOG all -- anywhere anywhere LOG level warning
MASQUERADE all -- anywhere anywhere

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

ログの量は多くなってしまいますが、FluentdがS3に送って、S3がGlacierに保存してくれると思います。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら