[technology]softflowd on OpenWRT
さて、昨日のブログに書いたとおり、OpenWRTにsoftflowdをインストールしてまずはnetflow collector無しで軽くテスト。
OpenWRTマシンはBuffaloのBHR-4GRVにOpenWRT 15.05.1 chaos calmerを焼いたものです。
このマシンは普段使いで、proxyサーバー兼DNSキャッシュとして使っています。なので、Webアクセスするとトラフィックがこのマシンを通っていきます。
インストールはopkgで簡単。
# opkg update # opkg install softflowd
これで終わりです。
そして/etc/config/softflowdを下記の様に設定。
netflow collectorが無いのでexport先を示すhost_portは空のままです。
sampling_rateをデフォルトの100→1に変更
あとtimeoutを60secに設定。(まだ意味は良く判らない)
root@OpenWrt:~# cat /etc/config/softflowd config softflowd option enabled '1' option interface 'br-lan' option pcap_file '' option timeout 'maxlife=60' option max_flows '8192' option host_port '' option pid_file '/var/run/softflowd.pid' option control_socket '/var/run/softflowd.ctl' option export_version '5' option hoplimit '' option tracking_level 'full' option track_ipv6 '0' option sampling_rate '1'
この状態で、下記でsoftflowdを起動。
/etc/init.d/softflowd start
別のPCのブラウザから適当にWebサイトをアクセスします。(とりあえずimpress watchを)
そして以下のコマンドを打ちます。
# softflowctl dump-flows
これで過去60秒分?のフロー情報がバラバラと表示されます。
DNSアクセス(1.1.1.1)とimpressのサイト(202.218.128.2xx)へのアクセスのフロー情報が表示されます。
192.168.11.254はsoftflowdを動かしているOpenWRTマシンです。(Proxy)
ACTIVE seq:406 [1.1.1.1]:53 <> [192.168.11.254]:29416 proto:17 octets>:87 packets>:1 octets<:71 packets<:1 start:2019-01-30T13:37:41.361 finish:2019-01-30T13:37:41.364 tcp>:00 tcp<:00 flowlabel>:00000000 flowlabel<:00000000 EXPIRY EVENT for flow 406 in 38 seconds ACTIVE seq:407 [1.0.0.1]:53 <> [192.168.11.254]:29416 proto:17 octets>:87 packets>:1 octets<:71 packets<:1 start:2019-01-30T13:37:41.362 finish:2019-01-30T13:37:41.365 tcp>:00 tcp<:00 flowlabel>:00000000 flowlabel<:00000000 EXPIRY EVENT for flow 407 in 38 seconds ACTIVE seq:408 [192.168.11.254]:45049 <> [202.218.128.212]:443 proto:6 octets>:2059 packets>:15 octets<:19261 packets<:19 start:2019-01-30T13:37:41.367 finish:2019-01-30T13:37:41.432 tcp>:1a tcp<:1a flowlabel>:00000000 flowlabel<:00000000 EXPIRY EVENT for flow 408 in 38 seconds ACTIVE seq:409 [192.168.11.254]:45917 <> [202.218.128.210]:443 proto:6 octets>:2423 packets>:22 octets<:21307 packets<:20 start:2019-01-30T13:37:41.377 finish:2019-01-30T13:37:41.507 tcp>:1a tcp<:1a flowlabel>:00000000 flowlabel<:00000000 EXPIRY EVENT for flow 409 in 38 seconds ACTIVE seq:410 [1.1.1.1]:53 <> [192.168.11.254]:15716 proto:17 octets>:85 packets>:1 octets<:69 packets<:1 start:2019-01-30T13:37:41.380 finish:2019-01-30T13:37:41.384 tcp>:00 tcp<:00 flowlabel>:00000000 flowlabel<:00000000 EXPIRY EVENT for flow 410 in 38 seconds ACTIVE seq:411 [192.168.11.254]:54502 <> [202.218.128.203]:443 proto:6 octets>:2265 packets>:19 octets<:29351 packets<:25 start:2019-01-30T13:37:41.387 finish:2019-01-30T13:37:41.415 tcp>:1a tcp<:1a flowlabel>:00000000 flowlabel<:00000000 EXPIRY EVENT for flow 411 in 38 seconds
この抜粋には出ていませんが、このOpenWRT機(Proxy)にアクセスするPCとのフローも表示されます。
次に先ほどの/etc/config/softflowdのhost_portに'192.168.11.13:9999'を書き込んでsoftflowdをrestartさせます。
192.168.11.13はUbuntu入れたPCです。192.168.11.13上でtcpdumpを動かしてみると下記の様にOpenWRT機からnetflowパケットが飛んできているのが確認できました。
toy@DELL-0001:~$ sudo tcpdump dst port 9999 -v [sudo] toy のパスワード: tcpdump: listening on xenbr0, link-type EN10MB (Ethernet), capture size 262144 bytes 22:59:34.421961 IP (tos 0x0, ttl 64, id 17692, offset 0, flags [DF], proto UDP (17), length 1444) OpenWrt.lan.35165 > 192.168.11.13.9999: UDP, length 1416 22:59:34.422055 IP (tos 0x0, ttl 64, id 17693, offset 0, flags [DF], proto UDP (17), length 1444) OpenWrt.lan.35165 > 192.168.11.13.9999: UDP, length 1416 22:59:34.422077 IP (tos 0x0, ttl 64, id 17694, offset 0, flags [DF], proto UDP (17), length 916) OpenWrt.lan.35165 > 192.168.11.13.9999: UDP, length 888 22:59:39.661507 IP (tos 0x0, ttl 64, id 17803, offset 0, flags [DF], proto UDP (17), length 1492) OpenWrt.lan.35165 > 192.168.11.13.9999: UDP, length 1464 22:59:39.661585 IP (tos 0x0, ttl 64, id 17804, offset 0, flags [DF], proto UDP (17), length 1492) OpenWrt.lan.35165 > 192.168.11.13.9999: UDP, length 1464 22:59:39.661603 IP (tos 0x0, ttl 64, id 17805, offset 0, flags [DF], proto UDP (17), length 1492) OpenWrt.lan.35165 > 192.168.11.13.9999: UDP, length 1464 22:59:39.661687 IP (tos 0x0, ttl 64, id 17806, offset 0, flags [DF], proto UDP (17), length 1492) OpenWrt.lan.35165 > 192.168.11.13.9999: UDP, length 1464 22:59:39.662287 IP (tos 0x0, ttl 64, id 17807, offset 0, flags [DF], proto UDP (17), length 1492) OpenWrt.lan.35165 > 192.168.11.13.9999: UDP, length 1464 22:59:39.662346 IP (tos 0x0, ttl 64, id 17808, offset 0, flags [DF], proto UDP (17), length 1396) OpenWrt.lan.35165 > 192.168.11.13.9999: UDP, length 1368 ^C 9 packets captured 9 packets received by filter 0 packets dropped by kernel
次はnetflow collectorを設置して実験してみたいと思います。
ところでこんなのがあるんですね。このサイズでOpenWRTプリインでRAM128MBはちょっと魅力的だな。
値段も安いし。(って、既にOpenWRT機3台あるのにどーする俺w)
売り上げランキング: 109,657
以下の記事に続きます。
rc30-popo.hatenablog.com