48
SORACOM Air で #pakeana したら 分かったこと 2015/10/19 #pakeana @otsuka752 (@twovs)

raspi + soracom #pakeana33

Embed Size (px)

Citation preview

Page 1: raspi + soracom #pakeana33

SORACOM Air で #pakeana したら 分かったこと

2015/10/19 #pakeana @otsuka752 (@twovs)

Page 2: raspi + soracom #pakeana33

agenda• 自己紹介

• what’s SORACOM? (ソラコム?)

• RasPi + SORACOM の準備と接続

• パケットを見たら分かったこと

1. Interface 2. DNS 3. 外部との通信

4. NAPT-Box 5. MTU 6. TCP-MSS

Page 3: raspi + soracom #pakeana33

about me• @otsuka752 (@twovs) IHANet AS#64613

• ネコ+奥さん+娘

• 無線LAN 装置の開発(1999-2004)

• オンラインゲームのシステム管理者(2004-2015)

• クラウドの中の人(2015-)

• http://tcpreplay.jp/ やってます

Page 4: raspi + soracom #pakeana33

好きなパケット

•ESP

•SSL/TLS

Page 5: raspi + soracom #pakeana33

what’s SORACOM? (ソラコム?)

Page 6: raspi + soracom #pakeana33
Page 7: raspi + soracom #pakeana33
Page 8: raspi + soracom #pakeana33

(続きは Web で…)

Page 9: raspi + soracom #pakeana33

【抜粋】https://blog.soracom.jp/

Page 10: raspi + soracom #pakeana33

【抜粋】https://blog.soracom.jp/

Page 11: raspi + soracom #pakeana33
Page 12: raspi + soracom #pakeana33

server SORACOM

DoCoMo3G

システム概要

Page 13: raspi + soracom #pakeana33

準備

• Raspberry Pi B+

• Rasbpian GNU/Linux 7

• Willcom HX003ZT (3Gモデム)

• SORACOM Air SIMカード

Page 14: raspi + soracom #pakeana33
Page 15: raspi + soracom #pakeana33

接続

• sudo apt-get update

• sudo apt-get install wvdial usb-modeswitch

• sudo vi /etc/wvdial.conf

• sudo ip route del default

• sudo wvdial

※ DefaultGW は家のルータに向けない

Page 16: raspi + soracom #pakeana33
Page 17: raspi + soracom #pakeana33
Page 18: raspi + soracom #pakeana33
Page 19: raspi + soracom #pakeana33

パケットを見たら 分かったこと

見なくても

Page 20: raspi + soracom #pakeana33

1. interface

• 10.x.y.z (プライベートアドレス)

• Point-to-Point Protocol (/32)

• peer 10.64.64.64/32

• DefaultGW dev ppp0 (via 192.0.2.1 でない)

Page 21: raspi + soracom #pakeana33
Page 22: raspi + soracom #pakeana33

2. DNS

• DNS Cacheサーバ : 169.254.0.53

• 「たぶん」unbound 1.4.22 (1.4 系の現時点での最新)

• 少なくとも 16台にロードバランス

• 全て AWS/EC2

Page 23: raspi + soracom #pakeana33
Page 24: raspi + soracom #pakeana33

• Cache に乗っていない ${RANDOM} な名前で

• 自分管理のドメイン名を問い合わせる

• 自分管理の DNSサーバで tcpdump すれば

• DNS Cache サーバの SrcIP/台数が分かる

Page 25: raspi + soracom #pakeana33

3. 外部との通信

• AWS の(EC2 の)アドレスに NAPT される

• NAPT されて The Internet と通信可

• The Internet から RasPi へは不可

※ API で速度切替可(32/128/512/2048[kbps])

Page 26: raspi + soracom #pakeana33
Page 27: raspi + soracom #pakeana33

server SORACOM

4. NAPT-Box

NAPT

Page 28: raspi + soracom #pakeana33

NAPT

SORACOM server

• 外部から NAPT-Box へは通信不可

• 内側からは NAPT されて外部へ

• NAPT table がある時は外部からも可(戻りのパケット)

Page 29: raspi + soracom #pakeana33

10.215.173.222:1

10.215.173.222:2

10.215.173.222:1024

10.215.173.222:1025

myserver:9999

myserver:9999

myserver:9999

myserver:9999

NAPT

tcpdump

Page 30: raspi + soracom #pakeana33

• 「基本的には」SrcPort は変換されない

• 下記が SrcPort だとサーバにパケットが届かない

• 「たぶん」NAPT-Box で使われている

• 22, 80, 137, 138, 1900

• >1023 は「少なくとも観測時は」全て届いた

4. NAPT-Box

Page 31: raspi + soracom #pakeana33

10.215.173.222:12345 myserver:9999

NAPT

10.215.173.222:12345 myserver:9999

UDP : 15[sec] TCP : 600[sec] ※ 他機器の timeout 値も要考慮

※ 例えば AWS/ELB は 60[sec]

tcpdump

Page 32: raspi + soracom #pakeana33

• NAPT session timeout

• UDP は 15[sec]

• TCP は 600[sec]

• ICMP は…未測定(hping3 bug ってた)

4. NAPT-Box

Page 33: raspi + soracom #pakeana33

5. MTU

• MTU = 1464[Byte]

• ping -s 1436 の時が最大

• IP(20)+ICMP(8)+Payload(1436)=1464

Page 34: raspi + soracom #pakeana33

RasPi から 1436[Byte]指定で ping 送信=OK

myserver にも届いている(応答している)

Page 35: raspi + soracom #pakeana33

myserver にも届いていない

RasPi から 1437[Byte]指定で ping 送信=NG

Page 36: raspi + soracom #pakeana33

5. MTU

• MTU = 1464[Byte]

• ping -s 1436 指定が最大

• IP(20)+ICMP(8)+Payload(1436)=1464[Byte]

Page 37: raspi + soracom #pakeana33

• SORACOM で TCP-MSS を書き換えてる

• RasPi から TCP-MSS=1460 で送信しても

• 「たぶん」NAPT-Box が 1350 に書き換える

• 「たぶん」AWS/VPC と Flet’s網を考慮

6. TCP-MSS

Page 38: raspi + soracom #pakeana33

NAPT-Box 通過前(RasPi が送信した最初の SYN)

Page 39: raspi + soracom #pakeana33

NAPT-Box 通過後(サーバが受信した最初の SYN)

Page 40: raspi + soracom #pakeana33

• Flets’(1454) < SORACOM(1464)なので

• AWS/VPC + Flet’s網に最適な MSS にしてる(?)

• 参考

http://d.hatena.ne.jp/j3tm0t0/20111108/1320776609

http://jpn.nec.com/univerge/ix/faq/ipsec-ike.html#Q1-8

6. TCP-MSS

Page 41: raspi + soracom #pakeana33
Page 42: raspi + soracom #pakeana33

ところで…

Page 43: raspi + soracom #pakeana33

中古の 3G モデムが 値上がり中!?

Page 44: raspi + soracom #pakeana33

SORACOM 効果?

Page 45: raspi + soracom #pakeana33

Willcom XT003ZT

Page 46: raspi + soracom #pakeana33

少し余ってます

Page 47: raspi + soracom #pakeana33

懇親会で 差し上げます!

Page 48: raspi + soracom #pakeana33

END