透過 l2 bridge nat

34
透過 L2 BRIDGE NAT @H-OTTER ICTSC6

Upload: h-otter

Post on 23-Jan-2018

119 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: 透過 L2 BRIDGE NAT

透過 L2 BRIDGE NAT@H-OTTER

ICTSC6

Page 2: 透過 L2 BRIDGE NAT

自己紹介 (軽く)Twitter: @_h_otter_

電気通信大学MMA

CTF難しい…

Page 3: 透過 L2 BRIDGE NAT

皆さん…

Page 4: 透過 L2 BRIDGE NAT
Page 5: 透過 L2 BRIDGE NAT

は?

Page 6: 透過 L2 BRIDGE NAT

NAT挟んでるのかな?

Page 7: 透過 L2 BRIDGE NAT

謎の挙動HOP増えない TRACEROUTE

Page 8: 透過 L2 BRIDGE NAT

運営において大変なこと…

Page 9: 透過 L2 BRIDGE NAT

運営において大変なこと…

プロビジョニングとオーケストレーション!!

Page 10: 透過 L2 BRIDGE NAT

プロビジョニングとオーケストレーション!!

サーバーをチーム分展開することが死ぬほど大変

サーバー同士が通信するようなものだとIPをハードコードする必要があり、展開後書き換える必要がある

Page 11: 透過 L2 BRIDGE NAT

プロビジョニングとオーケストレーション!!

Client: 10.1.0.10 Server: 10.1.0.11

Team 1

Client: 10.2.0.10 Server: 10.2.0.11

Team 2

・・・

同じ環境を展開するが、IPなどは変更しなければならない

Page 12: 透過 L2 BRIDGE NAT

面倒くさい!

Page 13: 透過 L2 BRIDGE NAT

面倒くさい!

⇒ NATを挟もう!!

Page 14: 透過 L2 BRIDGE NAT

NATを挟もう!!

Client: 192.168.0.10 Server: 192.168.0.11

Team 1

Client: 192.168.0.10 Server: 192.168.0.11

Team 2

・・・

完全に同じ環境を展開できる!

Team 1: 10.1.0.10

Team 2: 10.2.0.10

NAT

Page 15: 透過 L2 BRIDGE NAT

ここまでは普通

Page 16: 透過 L2 BRIDGE NAT

要件定義1チーム当たり20VLAN程度をさばく⇒ 20 * 15 = 300VLAN!!

1チーム当たり1つNATルーターを置ければいいが、そんなものはない

Routing はL3SWに任せてトラフィックをしっかり確保したい

Linuxサーバーで処理をすれば柔軟にできるんじゃない?

Page 17: 透過 L2 BRIDGE NAT

いける!ブリッジインターフェイスを作成

VLANをもとにチームIDを推定し、IPアドレスを相互に変換する (static NAT)

ARPを正しく処理すればいけるだろ!

Team ID: 1VLAN ID: 101

192.168.0.1

Team ID: 1VLAN ID: 151

10.1.0.1

Team ID: 2VLAN ID: 201

192.168.0.1

Team ID: 2VLAN ID: 251

10.2.0.1

Page 18: 透過 L2 BRIDGE NAT

iptables結論から言うとダメ

VLANをそれぞれ処理するには仮想インターフェイスを持つ必要があり、300個のVLANを処理することは難しい

Iptablesは結局 L3の処理しかいじれない

L2まで下りればVLANを柔軟に処理をできる

Page 19: 透過 L2 BRIDGE NAT

netfilter hookLinuxのネットワークに関するイベントをフックする機構

IptablesはnetfilterのL3のイベントをパックしたものといえる

Linuxが処理をできるすべてのネットワークについて干渉できる

Page 20: 透過 L2 BRIDGE NAT

netfilter hookLinuxのネットワークに関するイベントをフックする機構

IptablesはnetfilterのL3のイベントをパックしたものといえる

Linuxが処理をできるすべてのネットワークについて干渉できる

_人人人人人人人人_> Kernel Module < ̄Y^Y^Y^Y^Y^Y^Y ̄

Page 21: 透過 L2 BRIDGE NAT

大変だったこと

ARP tables

Switch tables

Bridge table

Checksum

Page 22: 透過 L2 BRIDGE NAT

ARP

L3SW

IP: 192.168.0.2HW: A

IP: 10.1.0.1HW: B

VLAN100VLAN150 (trunk) VLAN150VLAN100 (trunk)

SRC IP: 192.168.0.2DEST IP: 192.168.0.1

SRC HW: ADEST HW: broadcast

Page 23: 透過 L2 BRIDGE NAT

ARP

L3SW

IP: 192.168.0.2HW: A

IP: 10.1.0.1HW: B

VLAN100VLAN150 (trunk) VLAN150VLAN100 (trunk)

SRC IP: 192.168.0.2DEST IP: 192.168.0.1

SRC HW: ADEST HW: broadcast

Page 24: 透過 L2 BRIDGE NAT

ARP

L3SW

IP: 192.168.0.2HW: A

IP: 10.1.0.1HW: B

VLAN100VLAN150 (trunk) VLAN150VLAN100 (trunk)

SRC IP: 192.168.0.2DEST IP: 192.168.0.1

SRC HW: ADEST HW: broadcast

SRC IP: 10.1.0.2DEST IP: 10.1.0.1

SRC HW: ADEST HW: broadcast

Page 25: 透過 L2 BRIDGE NAT

ARP

L3SW

IP: 192.168.0.2HW: A

IP: 10.1.0.1HW: B

VLAN100VLAN150 (trunk) VLAN150VLAN100 (trunk)

SRC IP: 10.1.0.2DEST IP: 10.1.0.1

SRC HW: ADEST HW: broadcast

Page 26: 透過 L2 BRIDGE NAT

ARP

L3SW

IP: 192.168.0.2HW: A

IP: 10.1.0.1HW: B

VLAN100VLAN150 (trunk) VLAN150VLAN100 (trunk)

SRC IP: 192.168.0.2DEST IP: 192.168.0.1

SRC HW: ADEST HW: broadcast

SRC IP: 10.1.0.2DEST IP: 10.1.0.1

SRC HW: ADEST HW: broadcast

ここで、VLANが同じだとL3SWのVLAN100のmacテーブルが汚れてしまい、直接HW: Bへ通信されてしまう

Page 27: 透過 L2 BRIDGE NAT

ARP

L3SW

IP: 192.168.0.2HW: A

IP: 10.1.0.1HW: B

VLAN100VLAN150 (trunk) VLAN150VLAN100 (trunk)

SRC IP: 192.168.0.2DEST IP: 192.168.0.1

SRC HW: ADEST HW: broadcast

SRC IP: 10.1.0.2DEST IP: 10.1.0.1

SRC HW: ADEST HW: broadcast

L3SWがごみパケットを送信して、flooding することも…

Page 28: 透過 L2 BRIDGE NAT

IP

L3SW

IP: 192.168.0.2HW: A

IP: 10.1.0.1HW: B

VLAN100VLAN150 (trunk) VLAN150VLAN100 (trunk)

Page 29: 透過 L2 BRIDGE NAT

TCP, UDP

L3SW

IP: 192.168.0.2HW: A

IP: 10.1.0.1HW: B

VLAN100VLAN150 (trunk) VLAN150VLAN100 (trunk)

SRC IP: 192.168.0.2DEST IP: 192.168.0.1

SRC HW: ADEST HW: broadcast

SRC IP: 10.1.0.2DEST IP: 10.1.0.1

SRC HW: ADEST HW: broadcast

TCP, UDP checksumが書き換わってしまい、通信が失敗する

Page 30: 透過 L2 BRIDGE NAT

しんどかった…

Page 31: 透過 L2 BRIDGE NAT

スペック

帯域:約400Mbps (NIC: 1Gbps * 2)

レイテンシ: 約0.5 msec

Page 32: 透過 L2 BRIDGE NAT

スペック

帯域:約400Mbps (NIC: 1Gbps * 2)

レイテンシ:約0.5 msec

Page 33: 透過 L2 BRIDGE NAT

@a_r_g_vの発表

https://goo.gl/sTgxnA

Page 34: 透過 L2 BRIDGE NAT

透過 L2 BRIDGE NAT@H-OTTER, @A_R_G_V

ICTSC6