Category Archives: network

OpenvSwitchを使ってTremaの検証をしよう

準備 OpenvSwitchはOpenstackでも登場しました、仮想ソフトウェアスイッチです。 OpenFlowスイッチがないとOpenFlow実践入門を読んでいても物足りない内容になってしまうので、こやつにOpenFlowスイッチの役割をしてもらうのです。 必要な物といっても、Mac上にVirtualBoxでUbuntuサーバーを2台ほど建てて、片方にTremaをインストールしたOpenFlowコントローラ。 もう片方にOpenvSwitchをインストールしたOpenFlowスイッチとして準備をしました。 2台用意しなくても、OpenFlowコントローラにループバックアドレスを指定することで1台でも実験可能なようでした。 VirtualBoxの設定 コントローラーの方はNIC2個、スイッチの方はNIC4個で設定します。 eth0/eth1は割り当てをブリッジにして、eth0はExternal用、eth1はInternal用にしました。 スイッチ側のeth2/eth3は割り当ては内部ネットワークにします。理由はまた後で書きますが、ブリッジにして設定投入したあとにリンクアップしますと、いつぞややらかしたL2のストリームを起こしてしまうのです。 OpenvSwitchでSTPを有効にすれば回避できますが、Tremaの検証がメインなのでいまのところは内部ネットワークでもいいかなと。 Ubuntuのセットアップを済ますとeth0だけしか表示されない!と思うかもしれませんが 下のようになっていれば問題ないです。 OpenvSwitchのインストールは で完了ですが、検証中に色々と入れたり消したりを繰り返していたのでもしかしたら上手くいかないケースがあるかもしれません。そうなったらごめんなさい。 ただカーネルモジュールがちゃんと認識されていれば大丈夫かなと思ったり。 後はipv6は無効にしてていいかも。 設定ファイル コントローラ側のネットワークの設定ファイルはこんな感じで。 スイッチ側のネットワーク設定ですが、ブリッジの設定方法に2通りあり、コマンドで投入する方法と、この/etc/network/interfaceに記述してしまう方法とがあります。 個人的な好みで/etc/network/interfaceに書き込みました。 ではこれで進めていきますか。 Ubuntuサーバー構築から進めていた場合は、Kernelやパッケージの更新も入っているかもしれませんので、ここらで再起動しておくのもいいかもしれませんね。 不安な場合はVirtualBoxの必殺技、スナップショットを保存しておくのもいいね。 設定投入 ブリッジの設定ですが、/etc/network/interfaceに記述していた方は、再起動したら出来上がっているかもですが いったんifdownしてifupしたら完了です。 コマンドで設定する場合は以下の様な感じです。 後はコントローラーを設定すれば完了です。 もう完了です。数日やってますが、まとめてしまうと速いですねw コントローラーの設定ですが、ポートの指定をしないとぼくの環境では上手くいかなかったので、まずはTremaを実行したときのポートを確認します。 6653のようですね。 後はコントローラー側と、スイッチ側で疎通がちゃんと取れるかどうかを確認して、問題なければコントローラの設定を入れましょう。 スイッチ側とコントローラ側で疎通がとれることを確認しておきます。 オッケーですぅ。 疎通は問題ないのでセットしますか。 それではコントローラーでリピータハブをTrema runしてみましょう! ドキワク! OpenvSwitchでOpenFlowスイッチの役をやってもらおう と、そのまえに! ここで利用するリピータハブ(※参考サイト参照)のコードとTremaについているExampleのリピータハブサンプルコードと 比較を少ししてみてリーディングしましょうか。 以上です。 んで実行すると、うまくコントローラーと接続できていればダンプされるはずなのです。 では第7章で実践しているパッチパネルを検証をしてみます。 これでOpenFlowスイッチがなくても第7章の検証ができました。 プログラミングの検証と割り切ればこれで問題ないはずですが、やっぱり実際にスイッチに繋いでとかやってみたいなぁと思いますよね。コンシューマの無線LANを改造して使えるそうなのでその辺もまた調べてみますか。 OpenFlowの何がすごいのかって、L2(L1もなのかな?)もプログラミングできるということに(っていうのもどこかのウェブサイトで読んだのですがw) なったということなのれす。 番外編 最初は気付かずにストリーム発生しまくりだったんでw失敗の産物のログがあるのでちょこっと載せておきます。 何かの役に立つかも、立たないかもで。 OpenvSwitchでSTPの有効にするときは下のコマンドになります。 無効にするときはfalseですね。 万が一、ストリームが起こった時にはifdownを光速で叩けば復旧できます。 落とすNICの名前はそれぞれだろうから、落ちないじゃないか!ってうちに文句を言わないでおくれよ。 たとえばサーバーが近くになくてリブートしかできないっていうなら リブートすればコマンドを叩ける余裕はあるはずなので、下のようなコマンドを叩こう。 たたたたん たたん たんた たんたん。 ただVirtualBoxでNICを落とすとか、LANケーブルを抜いた方が確実に速い。 失敗の産物のログです。 そんな感じで。 参考サイト ainoniwa.net UbuntuでOpen vSwitchを使うときに/etc/network/interfacesが使える ranosgrantのブログ 2万円で OpenFlow スイッチを自作しよう Trema 日記 Openvswitch を OpenFlow スイッチとして使う

Ubuntu14 にTrema 0.4.7 をインストールしました

まえおき やっとでパーフェクトRuby(技術評論社)とプログラミング言語Ruby(オライリージャパン)を読み終わりました!続いてはRubyによるクローラー開発技法(ソフトバンククリエイティブ)と、メタプログラミングRuby(ASCII)と、クラウド時代のネットワーク技術OPENFLOW実践入門(技術評論社)の3冊をInterleaveに進めていこうと思います。今度は実際にコードを書いて進める時間が多いと思うので楽しみなのです。 リファクタリング:Rubyエディション (ASCII)も立ち読みはしましたが、まだちょっとばかり難しそうだったのでそっと本棚に戻してきました。 Interleave? 真か嘘かは定かで無いですが 参考サイト Wired Geekdad Everything You Thought You Knew About Learning Is Wrong によりますと、もくもくと1つのことを進めるよりも同時並行で色々と進めた方が効果が高い!!という記事を鵜呑みにして(同時に進めた方が楽しいしね)、Let’s EnJoyで進めていこうじゃないかという試みです。 必要そうなものをインストール 開発用のUbuntuはバーチャルボックスで新たに用意しました。 Rubyの環境も用意します。Ruby+ネットワークの勉強もできるなんていいものを見つけたよ。 今回はRuby 2.0で進めます。 仕上げに Tremaをインストールします 参考サイト Github Trema TremaGithub sinclains’s blog Trema 0.4.7 install (Ubuntu14.04 + Ruby 1.9.3) Gemのバージョンをあわせる必要があるようです。そのまま進めたらエラーを吐きました。 あとはTrema本体とWiresharkを入れて終わりのようでした。 テスト OpenFlow実践入門にあるHelloworldを実行してみます。 ウム。 問題ないようです。 今日はすっごい久しぶりにPythonを書いてみたらRubyならこれで動くのに!(^_^メ)メキィ! と思うところがあり、こういう経験は初めてだったりした。 ※メキィ:キーボードが折れた音。 Trema 冠婚葬祭のなんやらは全く関係なくって(どうしてもあの歌が頭に流れるんだよ)、Ruby用のOpenflowの開発環境のことです。 一番最後にTremaのことを書くのはおかしいなぁと書きながら書きなおそうか少しだけ悩んだけれど、爪が伸びててキーが打ちにくいのでこのままにするぜぃ! TremaはOpenflowの開発環境のなかではダントツでコンパクトに仕上げられるようで、コンパクトにできるのはPythonだという固定観念を持っていたような感じなので、なかなか新鮮です。 おわり

lpic303 ネットワーク監視 Tcpdump

lpic303 ネットワーク監視 wireshark lpic303 ネットワーク監視 ntop まえがき 一人で1台のサーバー運用をしていても使う事はまずないTcpdump。使わないという事もないけれどごくまれだ。 ネットワークのコマンドなんだから、そりゃそうだろうという声も聞こえてきそうだが。 基本 基本と言ってもなんというか、たとえば、sshで繋いだ状態でtcpdumpとそのまま叩こうものならものすごい勢いで流れ出す。ちゃんと目的を明確にもって、オプションを指定して使うというのが基本になるだろう。 てなわけでオプションを。 オプション -p 無差別透過モード(プロミスキャスモード:自分宛てでないデータパケットも受信する)を利用しない。 -n アドレス(ホストアドレス、ポート番号など)を名前に変換しない。 -f 外部のホストとのやりとりは名前に変換しない。 -l 標準出力の内容をバッファリングする。 -i インターフェースの指定。なければ有効で一番小さいもの。 -N FQDNでの表記をしない。 -t 時間を出力しない。 -tt 整形なしで時間を出力する。 -v 詳細な出力。TTLなど。 -vv もっと詳細な出力。 -vvv もっともっと詳細な出力。 -A ASCIIでパケット出力。 -x 16進数でパケット出力。 -X 16 進表示されるときに、 ASCII 文字も表示する。(バイナリデータ) -c パケット数 指定したパケット受信後に終了する。 -s データ長 データ長を指定できる。 -w ファイル名 パケットを解析。引数に出力先のファイル名をとれる。 条件式 src 送信元をフィルタリングの対象 dst 送信先をフィルタリングの対象 host IPアドレスをフィルタリングの対象 ip proto ***** プロトコルをフィルタリングの対象 net ネットワーク・アドレス ネットワーク・アドレスをフィルタリングの対象 gateway **** 引数のゲートウェイが真の場合がフィルタリングの対象 ether broadcast/multicast イーサネットのブロードキャストかマルチキャストが対象 ip broadcast/multicast IPのブロードキャストかマルチキャストが対象 tcp, udp, icmp この3つはこれだけでフィルタリング可 こんなとこだろうか。   試してみょう 適当に何個かやってみる。 # tcpdump -vvv port 80 -t -f tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes IP (tos 0x0, ttl 114, id 29383, offset 0, […]

lpic303 ネットワーク監視 ntop

lpic303 ネットワーク監視 Tcpdump lpic303 ネットワーク監視 WIreshark プロローグ ネットワーク監視というと前回のNagiosでもZabbixでも可能だけれど、本書で紹介されているのが下の3個なのでどちらかというとネットワーク監視というか、パケットキャプチャな意味合いの監視という事かな。 ntop Wireshark Tcpdump ntop Installing:  ntop                                x86_64          5.0-5.el6                 epel           12 M Installing for dependencies:  GeoIP                               x86_64          1.5.1-5.el6               epel           21 M  dejavu-lgc-sans-mono-fonts          noarch          2.30-2.el6                sl            392 k  dejavu-sans-mono-fonts              noarch          2.30-2.el6                sl            449 k  graphviz                            x86_64          2.26.0-10.el6             sl            1.0 M  libXaw                              x86_64          1.0.11-2.el6              sl            177 k  libXmu                              x86_64          1.1.1-2.el6               sl             65 k  rrdtool                             x86_64          1.3.8-6.el6               sl            292 k  urw-fonts                           noarch          2.4-10.el6                sl            3.0 M ntopのインストールはsl/rpmforge/remiではヒットせず、epelからになるようだ。 昔のバージョンはコマンドラインから起動して-dでデーモンモードで起動というパターンだったらしいけど、今は起動スクリプトが用意されているみたい。なのだが、最初はコマンドで起動してほしいようです。  # /etc/init.d/ntop start ntop を起動中: service not configured, run ntop manually やる事はadminのパス設定くらいです。あとは終了スクリプトでエラーになるので書き換えが必要です。後はntop.confのIPアドレスを設定したら動作しました。 /etc/rc.d/init.d/ntop 28 #pidfile=/var/run/$prog.pid 29 pidfile=/var/lib/ntop/$prog.pid 気になったところは以下の内容が表示されるので、epelでインストールしていても古いらしいw 淘汰される運命にあるのでしょうかね。 2014年10月25日 16時45分40秒  CHKVER: This version of ntop is a minimally supported but OLDER version – please upgrade インストール方法なんて試験には出ないだろうけれど、ウェブでntopの監視を見ると思っていたよりも色々な事が見れるようなので、せっかくなので新しいバージョンを見てみようと思います。 Wireshark以降はまた次回に回しましょうか。 […]

さぶねっと早見表

ここをあけてくんな、さぶねっと早見表だよ。 /8 255.0.0.0 16,777,216 /9 255.128.0.0 8,388,608 /10 255.192.0.0 4,194,304 /11 255.224.0.0 2,097,152 /12 255.240.0.0 1,048,576 /13 255.248.0.0 524,288 /14 255.252.0.0 262,144 /15 255.254.0.0 131,072 /16 255.255.0.0 65,536 /17 255.255.128.0 32,768 /18 255.255.192.0 16,384 /19 255.255.224.0 8,192 /20 255.255.240.0 4,096 /21 255.255.248.0 2,048 /22 255.255.252.0 1,024 /23 255.255.254.0 512 /24 255.255.255.0 256 /25 255.255.255.128 128 /26 255.255.255.192 64 /27 255.255.255.224 32 /28 255.255.255.240 16 /29 255.255.255.248 8 /30 255.255.255.252 4 /31 255.255.255.254 2 /32 255.255.255.255 1 上段にあるメニューバーが、プルダウンになるのが嫌なので固定ページから通常の記事への移行中ですます。 何台だったかなぁと思っても、いつもさぶねっとでググって最初に出てきたページで確認するので、ここを見ることはほぼないと思うけれど。  

/etc/sysconfig/network-scripts/ほにゃららの設定例

メモ的な CentOS7系 外向き /etc/sysconfig/network-scripts/ifcfg-ens3 TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=ens3 UUID=db98c5f1-bd17-46ee-bee1-65c8c4fcc53f ONBOOT=yes HWADDR=00:0C:29:28:85:F8 IPADDR0=***.***.***.*** PREFIX0=24 GATEWAY0=***.***.***.*** DNS1=***.***.***.*** IPV6_PEERDNS=yes IPV6_PEERROUTES=yes 内向き /etc/sysconfig/network-scripts/ifcfg-ens4 TYPE=Ethernet BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no NAME=ens4 UUID=dd62dd7f-613b-4c32-962c-cbccc25fffb5 ONBOOT=yes HWADDR=00:0C:29:27:80:0B IPADDR0=192.168.0.4 PREFIX0=24 IPV6_PEERDNS=yes IPV6_PEERROUTES=yes CentOS6系 外向き /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 TYPE=Ethernet UUID=094e0fb0-518c-4923-8481-63bf9e77cb5d ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none HWADDR=00:0C:29:5C:C4:E2 IPADDR=***.***.***.*** PREFIX=24 GATEWAY=***.***.***.*** DNS1=***.***.***.*** DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME=”System eth1″ 内向き /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet UUID=78e2eecb-4130-4853-811a-fa539b0d4d3b ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none HWADDR=00:0C:29:5C:C4:D8 IPADDR=192.168.0.1 PREFIX=24 DEFROUTE=yes IPV4_FAILURE_FATAL=yes IPV6INIT=no NAME=”System eth0″

マルチなキャスト

マルチナと言えばヒンギスかなぁと思ってたが、マルチナ島津というのも有名らしい。 ちなみにまついな。にしたら、松井なほにゃららっていうのを期待していたんだけど、松井菜桜子という方がでてきた。 という事で、ブロードなキャストに続いて今回はマルチなキャストです。 双方の違いというと、ブロードとマルチともオールレンジ攻撃ですが、マルチはメッセージを要求するホストが存在するネットワークにだけデータをコピーできます。ということらしい。 ホストにじゃなくてネットワークにってとこは大事だな。 そんなマルチですがルーターを超えるのでTTLの設定ができます。てなわけでかつてはこんな脆弱なものもあったようだ。 TTL の設定が 0 のマルチキャストがネットワークで送信される Win2000の話ですがね。 つーことで、ブロードキャストに続いてマルチキャストでもTCP/IP Socket in Cのサンプルコードで実験してみました。 左上がメッセージを受けるクライアント、右上があなたはそこにいますかというメッセージをマルチキャストするサーバー、下側のホストが同じセグメントにあってConntrackToolで待ち構えている状態です。 同じネットワークなんですが、マルチキャストは受信してないですね。 ちょっと不安になったのでTcpdumpでもやってみましたが、マルチキャストはきませんでした。きませんでした。きませんでした。きませんでしたー。 22:34:36.290605 IP 192.168.24.63.45425 > 255.255.255.255.21110: UDP, length 4 22:34:39.292252 IP 192.168.24.63.45425 > 255.255.255.255.21110: UDP, length 4 22:34:42.293245 IP 192.168.24.63.45425 > 255.255.255.255.21110: UDP, length 4 22:34:45.293850 IP 192.168.24.63.45425 > 255.255.255.255.21110: UDP, length 4 ホストが存在するネットワークにコピーを送るはずなので、なおかつTcpdumpはレイヤー2まで確認できるのでってさっき調べたので、表示されるはずだと思うのだがおかしいので。 なぜ? 答えはtcpdumpのオプションが違う! [root@scientific ~]# tcpdump -i eth0 -n ip multicast tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 22:41:32.338341 IP 192.168.24.61.60727 > 224.3.2.1.9433: UDP, length 33 22:41:35.339300 IP 192.168.24.61.60727 > 224.3.2.1.9433: UDP, length 33 22:41:38.340661 IP 192.168.24.61.60727 > 224.3.2.1.9433: UDP, length 33 22:41:41.341806 IP 192.168.24.61.60727 […]