Net-snmp with IPv6

[ English ]

お知らせ

2004/01/19

configure optionの指定の仕方を変えました。最近のnet-snmp(5.0.9で確認しています)では --enable-ipv6 がサポートされていますので,BSD系のOSでIPv6を有効にする場合は --enable-ipv6 を指定することを推奨します。

2002/04/22

IPv6アドレスによるアクセスコントロール用パッチが本家net-snmpのCVS repositoryにマージされました。このパッチはnet-snmpの最新のリリース 5.0 に含まれております。今後,細かな修正を続けていきます。

2002/04/18

net-snmp-5.0.pre3へ対応しました。 5.0 リリースに統合します。

2002/04/02

net-snmp-5.0.pre2へ対応しました。 5.0 リリースに統合します。


目次


IPv6 ACLについて

net-snmpの5.0からIPv6をサポートするようになりましたが, IPv6アドレスベースによるアクセスコントロール(ACL)が実装されていませんでした。net-snmpの実装は,SNMPv3で定義されるView-Based Access Control Model(VACM)とIPアドレスベースによるアクセスコントロールの機能は関連しています。セキュアな管理プロトコルということで,SNMPv3の対応が必須であると考えて,IPv6アドレスによるアクセスコントロールを実装しました。

IPv6 ACL動作確認OS

確認はFreeBSD 4.4-RELEASEでおこなっています。この下に挙げられていないOSでの動作確認レポートは大歓迎です。

作り方

ソース入手場所

net-snmp 5.0 のソースはhttp://www.net-snmp.org/download/から入手できます。

またリリース後におこなわれた修正は,Anonymous CVSから入手することができます。現在は休止しています。

% cvs -d :pserver:anoncvs@pc5.sendai.wide.ad.jp:/cvsroot login
(Logging in to anoncvs@pc5.sendai.wide.ad.jp)
CVS password: (anoncvsと入力)
cvs -d :pserver:anoncvs@pc5.sendai.wide.ad.jp:/cvsroot co -r IPv6-5-0 net-snmp-IPv6

コンパイル

IPv6 関連の configure オプションには、以下の2つの機能についてのものがあります。

  1. IPv6アドレスによるアクセスコントロールのサポート
  2. IPv6関連MIB (RFC2452,2454,2465,2466) のサポート
1.の機能を使う場合は,--with-transportsオプションに UDPIPv6 を追加します。2.の機能を使う場合は,--with-mib-modules="mibII/ipv6" を追加します。なお,2.の機能の動作をこちら側で確認しているOSはFreeBSD 4-stableとNetBSD 1.5.2 Releaseです。 --enable-ipv6 を指定した場合は両方とも有効にします。

configureのオプションの指定例

% ./configure --enable-ipv6
agent/mibgroup/mibII/ipv6.c でコンパイルが失敗する場合は,以下の指定で試してみてください。
% ./configure --with-transports="UDPIPv6 TCPIPv6"

後は,通常通りに make,make install をするだけです。コンパイルについての詳細はnet-snmp-5.0に添付されているファイルINSTALLを参照してください。

% make
# make install

使い方

IPv6アドレスによるアクセスコントロールを実施するにあたって,snmpd.confに以下の指示語を使用できるようにしました。

いずれも,com2sec,rocommunity,rwcommunity のIPv6版です。対象とするネットワークをIPv6 prefix address/prefix-length でもって指定します。

snmpd.confの例(ファイル名:example.conf)

# sec.name source community
com2sec local localhost private
com2sec6 local localhost private
com2sec mynet 10.10.10.0/24 public
com2sec6 mynet fec0::/64 public

# sec.model sec.name
group mygroup v1 mynet
group mygroup v2c mynet
group mygroup usm mynet
group local v1 local
group local v2c local
group local usm local

# incl/excl subtree mask
view all included .1 80
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc

# context sec.model sec.level prefix read write notify
access mygroup "" any noauth exact mib2 none none
access local "" any noauth exact all all all

エージェントの起動

デフォルトではIPv4パケットのみ受けつけるエージェントが起動します。IPv6パケットを受けつけるエージェントを起動する際には以下のように起動します。

# snmpd udp6:161

IPv4パケット,IPv6パケット,両方とも受けつけるエージェントを起動する際には以下のように起動します。

# snmpd udp:161,udp6:161

マネージャの使い方

デフォルトではUDP/IPv4でsnmpパケットを送信します。UDP/IPv6でsnmpパケットを送信する場合は頭にudp6を付ける必要があります。

% snmpget -v1 -c public udp6:localhost sysDescr.0

マネージャをIPv6アドレスで指定する場合は,IPv6アドレス部分を[]で囲む必要があります。

% snmpget -v1 -c public udp6:[fec0::1] sysDescr.0
% snmpget -v1 -c public udp6:[fec0::1]:161 sysDescr.0

動作確認テスト

間違ったコミュニティ名や,許可されていないネットワークからのアクセスが正しく拒否されるかを確認しました。また,SNMPv3(USM)の機能が使用できるかを確認しました。

動作確認表

Agent
Manager
udp
udp6
udp
Success
Success
udp(wrong community)
Success
Success
udp(access from not permitted network)
Success
Success
udp(USM)
Success
Success
udp6
Fail(expected)
Success
udp6(wrong community)
Fail(expected)
Success
udp6(access from not permitted network)
Fail(expected)
Success
udp6(USM)
Fail(expected)
Success

最新のパッチについて

連絡先

このパッチに関する疑問点等ございましたら,abekatsu@cysols.comまでE-mailでご連絡ください。コメントやご意見等もどうぞ。