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

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 は良く使うんですけどね。
サーバ間のミラーリングに lftpSFTP が使えることが分かった。
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 側のバグなのか不明である。
もうちょっと調査が必要。