ラベル ネットワーク の投稿を表示しています。 すべての投稿を表示
ラベル ネットワーク の投稿を表示しています。 すべての投稿を表示

2015年1月8日木曜日

SNMP 64ビットのカウンタ

SNMP を使用したトラフィック量測定方法

インタフェースが受信した累積のバイト数 (インバウンド オクテット) を ifInOctets で取得できる。
インタフェースが送信した累積のバイト数 (アウトバウンド オクテット) を ifOutOctets で取得できる。

1. インバウンド オクテット (ifInOctets) または アウトバウンド オクテット (ifOutOctets) を一定の時間間隔 (例: 5分間隔) で取得する。

2. 測定値の差を時間で割る

例:
最初のインバウンド オクテットを ifInOctets1
5分後のインバウンド オクテットを ifInOctets2
とする

( ifInOctets2 - ifInOctets1 ) [バイト] ÷ 5[分]


単位を bps にするには、

( ifInOctets2 - ifInOctets1 ) × 8 ÷ 300 [bps]


32ビットカウンタについて

ifInOctets と ifOutOctets は、32ビットのカウンタなので、0 ~ (2の32乗-1) の整数が表現できる。
累積値が (2の32乗-1) を超えたら、0に一旦戻りカウントアップを続ける。


先ほど示したトラフィック量の計算式 ( ifInOctets2 - ifInOctets1 ) [バイト] ÷ 5[分]
が負になった場合、32ビットのカウンタが最大値を超えたと考えて計算することになる。

つまり、

(2の32乗 + ifInOctets2 - ifInOctets1 ) [バイト] ÷ 5[分]

と計算する。
計測間隔の間に2回以上32ビットのカウンタが最大値を超えると、正しく計算できない。
ここで、正しい値を求めるための計測間隔を求めてみる。

100Mbpsのインタフェースの場合、

2の32乗 [バイト] ÷ 100 [Mbps]
= { 2の(2 + 10 + 10 + 10)乗 × 8 } [ビット] ÷ { 100 × 10の6乗 } [ビット/秒]
= { 2の2乗 × 2の10乗 × 2の10乗 × 2の10乗 × 8 } [ビット] ÷ { 100 × 10の6乗 } [ビット/秒]

※ 概算で2の10乗 = 1024 ≒ 10の3乗 を使う。

≒ { 32 × 10の9乗 } [ビット] ÷ { 10の8乗 } [ビット/秒]
= 320 [秒]
≒ 5.3 [分]

よって、100Mbpsのインタフェースなら 5分間隔で取得すれば理論上計算できる。

1Gbpsのインタフェースの場合、間隔は10分の1になるので、30秒間隔で取得すれば理論上計算できる。

2の32乗 [バイト] ÷ 1 [Gbps]
≒ 32 [秒]

1Gbpsのインタフェースで、64ビットカウンタの ifHCInOctets や ifHCOutOctets が使える場合、こちらを使用すれば、取得間隔を延ばすことができます。
ただし、SNMPv2C または SNMPv3 を使用する必要があります。SNMPv1 では 64 ビットのカウンタがサポートされていません。

因みに、Zabbix 2.2 で Template SNMP Device のローレベルディスカバリを使って登録した場合、32ビットカウンタを使用し、1分間隔の計測となるので、1Gbps のインタフェースの計測を正しく行うには不十分である。


 参考

2010年8月16日月曜日

Linux で IPv6 を試してみる

Linux で IPv6 を試してみました。
まずは、基本となるコマンドを調べています。
Ubuntu 10.04 で確認してます。

ufw (Firewall)

Ubuntu で UFW を有効にしている場合は、デフォルトで IPv6 のパケットを DROP します。
これを変更します。

$ sudo vi /etc/default/ufw
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
IPV6=yes
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----

$ sudo ufw allow 22/tcp #### 許可する通信を設定する。
$ sudo ufw disable && sudo ufw enable #### ufw を再起動する。

基本的なコマンド
  • アドレスの確認
    $ /sbin/ip -6 addr sh dev eth0
    $ /sbin/ifconfig eth0 | grep inet6

(作成中...)



参考

2010年8月8日日曜日

6to4 を試してみる

6to4 を試してみました。

ネットワーク構成

  • Cisco 1812J の Dialer1 で IPv4 インターネットに接続しています。
  • Cisco 1812J の Dialer1 には、IPv4 のグローバル アドレスが割り当てられますが動的です。

(作成中...)




Cisco1812J の設定

Dialer1 に動的に割り当てられた IPv4 のグローバル アドレスを調べます。

C1812J#sh ip int brief | inc Dialer1

ここでは、仮に 192.0.2.1 が割り当てられたと仮定して説明します。

6to4 のアドレスは、2002:IPV4ADDR::/48 のプレフィックスになりますので、6to4 用のトンネル インタフェース (Tunnel2002) に割り当てるアドレスをそこから選択します。

アドレスは、Linux で計算できます。

$ printf "2002:%02x%02x:%02x%02x::1/128\n" 192 0 2 1
2002:c000:0201::1/128

このアドレスを Tunnel 2002 に割り当てます。

Tunnel 2002 では、ICMP と TCP の ESTABLIESHD、UDP/53 (DNS) のみ許可することとします。

!
ipv6 access-list IPV6-IN
permit icmp any any
permit tcp any any gt 1023 established
permit udp any eq domain any gt 1023
deny ipv6 any any log
!
interface Tunnel2002
description 6to4 tunnel
no ip address
no ip redirects
!--- Dialer1 に割り当てられた IP アドレスが 192.0.2.1 の場合
ipv6 address 2002:C000:0201::1/128
ipv6 traffic-filter IPV6-IN in
tunnel source Dialer1
tunnel mode ipv6ip 6to4
!
interface Vlan1
ipv6 address 2002:C000:0201:1::1/64
!
ip access-list extended FW
permit 41 any any !--- プロトコル番号41 は、IPv6
!
interface Dialer1
ip access-group FW in
!
!---- ISATAP と組み合わせることも可能
interface Tunnel11
description ISATAP Tunnel
no ip address
no ip redirects
ipv6 address 2002:C000:0201:11::1/64
no ipv6 nd ra suppress
tunnel source Dot11Radio0
tunnel mode ipv6ip isatap
!
ipv6 route 2002::/16 Tunnel2002
ipv6 route ::/0 2002:C058:6301:: !--- 6to4 IPv6 relay anycast address


参考

ISATAP を試してみる

ネットワーク構成

[IPv6: 2001:db8:1::254]----{IPv6: 2001:DB8:1::/64}----Vlan1[C1812J]Dot0 ~~~~{192.168.11.0/24}~~~~[WinXP]


C1812J の設定

interface Dot11Radio0
ip address 192.168.11.1 255.255.255.0
!
interface Tunnel11
description ISATAP Tunnel
no ip address
no ip redirects
ipv6 address 2001:DB8:11::1/64
no ipv6 nd ra suppress
tunnel source Dot11Radio0
tunnel mode ipv6ip isatap

WinXP の設定

[%systemroot%\system32\drivers\etc\hosts] に追加する。
192.168.11.1 ISATAP


WinXP からの PING

>ping 2001:db8:1::254

Pinging 2001:db8:1::254 with 32 bytes of data:

Reply from 2001:db8:1::254: time=2ms
Reply from 2001:db8:1::254: time=1ms
Reply from 2001:db8:1::254: time=1ms
Reply from 2001:db8:1::254: time=1ms

Ping statistics for 2001:db8:1::254:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 1ms, Maximum = 2ms, Average = 1ms


参考

Windows XP で IPv6 を試してみる

Windows XP SP3 で試しています。

コマンド プロンプト上で操作します。

  • IPv6 をインストールする。
    >netsh int ipv6 install
  • IPv6 アドレスを確認する。
    >ipconfig
  • IPv6 アドレスを確認する。(別の方法)
    >netsh int ipv6 sh addr
  • リンクローカル アドレス (FE80::/10) に PING
    >ping fe80::21b:77ff:fe48:c598%5
    ※ リンクローカル アドレスは、インタフェース番号を % でアドレスの後ろに付加する。

参考

2010年8月7日土曜日

ソフトウェア ルータ Vyatta を試してみる。

サーバの構築は、仮想環境でということが多くなってきました。
構築作業中は、ネットワーク機器も仮想マシン上で動かすことができれば便利でしょう。
Linux をルータにしてしまえばいいのですが、ソフトウェア ルータ Vyatta (ヴィヤッタ) なるものがあるようです。
試してみました。
概要は、Online Demos (http://www.vyatta.com/products/online_demos.php) の An Introduction to Vyatta を参考にしてください。


ダウンロード

ダウンロードは、こちら (http://www.vyatta.org/downloads) から行えます。
Vyatta Core (VC) は、オープン ソースのバージョンで、サポートが付きませんが、自由にダウンロードできます。

仮想マシンのイメージ (バーチャル アプライアンス) としては、VMware ESX 3 and ESX 4 と Citrix XenServer が用意されています。
また、LiveCD ISO イメージから起動して利用することもできます。
もちろん、仮想マシンや実際のハードウェアにインストールして使用することもできます。


インストール

Online Demos (http://www.vyatta.com/products/online_demos.php) の Vyatta Software Installation を参考にしてください。

* システム要件
ハードウェア: x86
メモリ: 512MB (環境によっては、システム要件より少なくても動作します。私は、 128MB でインストールしました。)
ディスク: 1GB (2GB 以上推奨)
インタフェース: 必要なだけ用意する。

※ Vyatta Core 6.0 は、Linux Kernel 2.6.x でした。/etc/debian_version によると、Debian 5 をベースにしているようです。

私は、KVM で仮想マシンを作成しました。
  1. 仮想マシンマネージャを起動して、仮想マシンを新規作成します。
    ISO イメージ: vyatta-livecd-virt_VC6.0-2010.06.01_i386.iso (VC6.0 - Virtualization ISO)
    OS の種類: Linux
    バージョン: Generic 2.6.25 or later kernel with virtio
    メモリ: 512MB
    CPU: 1
    ディスク: 2GB
    詳細オプション > アーキテクチャ: i686

  2. 仮想マシンが LiveCD から起動したら、ログインします。(Username: vyatta, Password: vyatta)

  3. ハードディスクに Vyatta をインストールします。
    $ install-image

  4. インストーラの質問に答えます。
    Would you like to continue?: (既定値)
    Partition: (既定値)
    Install the image on?: (既定値)
    Continue?: Yes
    How big of a root partition should I create?: (既定値)
    Which one should I copy to sda?: (既定値)
    Enter vyatta password: (vyatta アカウントのパスワードを設定)
    Which drive should GRUB modify the boot partition on?: (既定値)

  5. 仮想マシンを停止します。
    $ sudo shutdown -h now

  6. 仮想マシンマネージャで必要なだけ仮想インタフェースを追加します。また、起動デバイスがハードディスクになっていることを確認します。必要のないデバイス (Sound など) は、削除してもよいでしょう。

  7. 仮想マシンを起動し、vyatta でログインします。

  8. Boot via の行が、image になっていることを確認します。
    $ show version

  9. interfaces の設定に作成した仮想インタフェースが存在することを確認します。
    $ show configuration

  10. インタフェースの番号が、eth0 から始まっていない場合、「設定の初期化」を実施して再起動すれば eth0 から認識します。

Vyatta CLI の操作方法

Vyatta CLI には、シスコルータに似ていますので、シスコルータを触ったことがある人ならば、すぐに操作を覚えることができると思います。

操作モードと設定モードがあります。
操作モードは、show コマンドや ping コマンド、debug コマンドなどを実行できます。
設定モードは、設定を変更できるモードです。
どちらのモードでも、Linux コマンド (less, ls, /sbin/ifconfig, sudo など) を実行することができます。

Vyatta にログインした直後は、操作モードです。
プロンプトは、vyatta@HOSTNAME$ です。
操作モードから、設定モードに移るには、configure を実行します。
プロンプトが、vyatta@HOSTNAME# になります。
設定モードから、操作モードに戻るには、exit を実行します。
操作モードで、exit を実行すると Vyatta からログアウトします。

CLI では、ヘルプが使えます。
[Tab] キーで、途中まで入力したコマンドの補完を行います。
補完候補が複数ある場合は、候補を表示し、もう一度 [Tab] キーを押すと、簡単な説明が表示されます。
[?] キーは、補完機能はありませんが、候補の表示と簡単な説明の表示機能は同じです。

シスコルータでは、コマンドの短縮形 (show コマンドの sh など) でも大丈夫ですが、Vyatta では、短縮形は受け付けられません。[Tab] キーの補完を使って効率よく入力しましょう。


初期設定

Online Demos (http://www.vyatta.com/products/online_demos.php) の Getting Started With Vyatta を参考にしてください。

  1. CLI に vyatta でログインします。

  2. インタフェースに IPv4 アドレスを設定します。
    $ configure # 設定モードに入ります。
    # set interfaces ethernet eth0 address 192.168.1.30/24 # アドレスを設定する。
    # set interfaces ethernet eth1 address 172.16.211.254/24 # アドレスを設定する。
    # show interfaces # 設定を確認します。+ で始まる行が変更した行、- で始まる行が削除した行

  3. サービスを有効にします。
    # set service ssh # ssh を有効にする。
    # set service https # https # Web GUI 管理インタフェースを有効にする。
    # show service # 設定を確認します。+ で始まる行が変更した行、- で始まる行が削除した行

  4. システム設定をします。
    # set system host-name Vyatta11 # ホスト名を設定します。
    # set system domain-name example.com # ドメイン名を設定します。
    # set system name-server 8.8.8.8 # DNS サーバを設定します。
    # set system name-server 8.8.4.4 # DNS サーバを設定します。
    # set system time-zone Asia/Tokyo # タイムゾーンを東京に設定します。
    # delete system ntp-server # 既存の NTP サーバの設定を削除します。
    # set system ntp-server ntp.jst.mfeed.ad.jp # NTP サーバを設定します。
    # set system gateway-address 192.168.1.1 # デフォルト ゲートウェイを設定します。
    # show system # 設定を確認します。+ で始まる行が変更した行、- で始まる行が削除した行

  5. 最後に設定を反映して、ファイルに保存します。
    # show # 設定を確認します。+ で始まる行が変更した行、- で始まる行が削除した行
    # commit # 設定を反映する。
    # save # 設定を /opt/vyatta/etc/config/config.boot に保存する。
    # exit # 設定モードを抜けます。

Web GUI 管理インタフェースによる設定

  1. 事前に CLI でインタフェースに IP アドレスを振って service https を有効にしておきます。
  2. Web GUI 管理インタフェースに vyatta ログインします。ブラウザで、https://<設定した IP アドレス>/ にアクセスします。
  3. 左側のツリーを展開して、設定項目を探します。太字になっている項目がデフォルトから変更されている設定です。
  4. 項目に設定を入力し終えたら、[Set] をクリックします。
  5. 設定反映前の項目には、値の右にオレンジの丸が表示されます。[Commit] をクリックして設定を反映します。
  6. [Operation] タブを選択すると、左側のツリーが操作の一覧に代わります。左側のツリーから、ping を選択して、接続性を試験してみましょう。

設定の初期化

$ configure
# load /opt/vyatta/etc/config.boot.default # デフォルトの設定を読み込みます。
# set system login user vyatta authentication plaintext-password PASSWORD # パスワードの再設定
# show # 設定を確認します。
# commit
# save
# exit
$ reboot # 再起動します。


NAT (IP マスカレード) の設定

# set service nat rule 10 type masquerade
# set service nat rule 10 source address 192.168.10.0/24
# set service nat rule 10 outbound-interface eth0
# show service nat
# commit
# save


GRE Tunnel

# set interfaces tunnel tun0 address 192.168.11.1/24
# set interfaces tunnel tun0 local-ip 192.168.200.1
# set interfaces tunnel tun0 remote-ip 192.168.200.2
# set interfaces tunnel tun0 encapsulation gre
# show interfaces tunnel
# commit
# save

Static Routing
# set protocols static route 192.168.0.0/16 next-hop 192.168.200.101
# show protocols static
# commit
# save


Vyatta CLI
  • ログアウトする。
    exit
  • バージョンの確認
    $ show version
  • 再起動
    $ reboot
  • システム停止
    $ sudo shutdown -h now
  • root アカウントのシェル
    $ sudo -i
  • 設定の確認
    $ show configuration
  • 設定モードに入る
    $ configure
  • インタフェースの確認
    $ show interfaces
  • ルーティングを確認
    $ show ip route

IPv6 入門 リンク

IPv6 の入門によさそうなリンクをメモしておきます。
いよいよ、IPv6 を覚えないといけなくなりそうな予感。

参考

2010年3月20日土曜日

Network Emulation: netem

  • ネットワーク遅延を簡単に検証できる方法が無いかと探していたら、Linux で簡単にできそうだということが分かりました。
早速、Linux KVM で Ubuntu 9.10 (kernel: 2.6.31-20-generic-pae) を動作させて、実験してみました。


[JeOS11]eth0----eth0[JeOS13]eth1----eth0[JeOS12]

※ JeOS13 を NIC 2枚挿しにして、ルータとして機能させ、ネットワークの遅延などを発生させます。

/etc/sysctl.conf で、"net.ipv4.ip_forward=1" として、再起動すればルーティングできるようになります。


使い方
  • eth0 からの出力を 1000ms 遅延させる
    $ sudo tc qdisc add dev eth0 root netem delay 1000ms
    $ tc qdisc show dev eth0 ## 設定の確認
    qdisc netem 8001: root limit 1000 delay 1.0s
  • eth0 からの出力を 1000ms±100ms 遅延させる
  • $ sudo tc qdisc change dev eth0 root netem delay 1000ms 100ms
    ## 既に設定が存在するときは、add ではなく change を使う。
    $ tc qdisc show dev eth0
    qdisc netem 8001: root limit 1000 delay 1.0s 100.0ms
  • eth0 からの出力の設定を削除する
    $ sudo tc qdisc del dev eth0 root
    $ sudo tc qdisc show dev eth0
    qdisc pfifo_fast 0: root bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
  • eth0 からの出力を平均 1000ms で正規分布に従い遅延させる
    $ sudo tc qdisc add dev eth0 root netem delay 1000ms 200ms distribution normal
    $ tc qdisc show dev eth0
    qdisc netem 8003: root limit 1000 delay 1.0s 200.0ms
  • eth0 からの出力を 10% パケットをロスさせる
    $ sudo tc qdisc add dev eth0 root netem loss 10%
    $ tc qdisc show dev eth0
    qdisc netem 8002: root limit 1000 loss 10%
  • eth0 からの出力を 500ms±100ms 遅延、10% パケットをロス、10% 複製する
    $ sudo tc qdisc add dev eth0 root netem delay 500ms 100ms loss 10% duplicate 10%
    $ tc qdisc show dev eth0
    qdisc netem 8003: root limit 1000 delay 500.0ms 100.0ms loss 10% duplicate 10%


参考

2010年1月15日金曜日

RFC の読み方

こちらのサイト (http://www.rfc-editor.org/rfcsearch.html) で検索できる。

More Info (Obs&Upd) の説明
  • Obsoletes RFCXXXX ... RFCXXXX を置き換えた。(RFCXXX の内容は古くなっている。)
  • Obsoleted by RFCXXXX ... RFCXXXX によって置き換えらた。(RFCXXXX を参照する必要がある。)
  • Updates RFCXXXX ... RFCXXXX を一部更新した。
  • Updated by RFCXXXX ... RFCXXXX によって一部が更新された。(RFCXXXX も参照する必要がある。)
Status 列の説明
  • Standard Track は、「Proposed Standard」→「Draft Standard」→「Standard」の順番。
  • Informational ... 種々の情報を表す
  • Experimental ... 実験的技術情報である
  • Historical ... すでに使われなくなった技術等を表す
  • Best Current Practice (BCP) ... その時点でもっとも最良と考えられる方策

2009年12月7日月曜日

Google Public DNS

Google さん。なんと頼もしいお方。
自由に使える Public DNS を公開してくださったようです。
その上、覚えやすい「8.8.8.8」 と「8.8.4.4」なのです。

参考

2007年11月18日日曜日

SFTP を使おう

SFTP って今まであまり意識して使ってこなかった。
SCP は良く使うんですけどね。
サーバ間のミラーリングに lftp で SFTP が使えることが分かった。
FTP サーバを立ち上げなくても、ssh サーバが動作していれば良い。
最近は、リモートのサーバの管理に ssh を使うのは常識だろう。
使える場面が結構多そうだ。

2007年10月30日火曜日

[BGP] Confederation

RFC3065: Autonomous System Confederations for BGP

今日は電車の中で、BGP Confederation に関する RFC を読んでいた。
11ページ。手ごろな量である。
あまりに大作な RFC は読みきれないので大変。(^^;
この位の長さならなんとかなるかな。
通勤は片道2時間程度。今日は4ページ読んだ。
もうちょっと集中して読む速度を上げないと、時間がいくらあっても足りませんなぁ。(汗)

2007年10月14日日曜日

IE7 と Firefox のダイジェスト認証

自宅の東芝製 HDD レコーダは、IE7 からのアクセスはできるのだが、Firefox でのアクセスはできない。
ダイジェスト認証を使っているようだが、IE7 側のバグなのか Firefox 側のバグなのか不明である。
もうちょっと調査が必要。