Zabbix SNMP監視設定の手順　その１　net-snmp

Step1　ホストを作成する

Step2 net-snmpをインストールする

# net-smnpインストール
まず「yum」を使って「net-snmp」をインストールしていきます。

また、「snmpwalk」等のコマンドを使用するために、「net-snmp-utils」も合わせてインストールします。

```
# yum -y install net-snmp
# yum -y install net-snmp-utils
```

# net-snmp設定（snmp v1 v2の設定）


「/etc/snmp/snmpd.conf」が「net-snmp」の設定ファイルとなりますので、こちらを編集していきます。

今回は、「snmp v1 v2」を対象としています。
snmp v3については、ここで説明をすると長くなるので別途説明させて頂きます。

## 設定項目

基本的な設定項目は下記の通りとなります。


com2sec (ネットワーク範囲とコミュニティ名)
group (セキュリティについて設定)
view (snmpにて参照可能な情報範囲の指定)
access (アクセスコントロールの設定)

## 設定変更

設定ファイルである「/etc/snmp/snmpd.conf」のバックアップを行ってから、編集作業を行っていきます。

```
# cp -p /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf_yyyymmdd
# vi /etc/snmp/snmpd.conf
```
### com2sec設定

「ソースアドレス（接続可能なネットワーク）」と「コミュニティ名（パスワードみたいなもの）」の組み合わせで、それに紐づく「セキュリティ名」を設定します。

### com2sec書式

```
com2sec セキュリティ名 ソースアドレス コミュニティ名

```
デフォルト設定を例にすると、セキュリティ名「notConfigUser」は全てのアドレスから、「public」というコミュニティ名で接続を許可するという設定になります。

### デフォルト設定

```
com2sec notConfigUser  default   public
```
※ソースアドレスの「default」というのは、全てのアドレスに該当となります。

### com2sec設定変更

デフォルト設定ではどこからでもsnmpでサーバの情報にアクセスできてしまい、セキュリティ的によろしくありません。なので、ソースアドレスの指定と新しいコミュニティ名を紐付けたセキュリティ名の変更を作成していきます。

デフォルトの設定を「#」でコメントとして、今回は「localhost(127.0.0.1)」からと、「192.168.1.0/24」のネットワークからのみ接続が可能で、コミュニティ名も「server-memo」に変更したセキュリティ名を作成しました。

### 設定変更後

```
# com2sec notConfigUser  default   public
com2sec local  localhost  server-memo
com2sec mynet  192.168.1.0/24  server-memo
```
※「セキュリティ名」「ソースアドレス」「コミュニティ名」は、環境に合わせて設定してください。

## group設定
snmpの「セキュリティモデル（v1,v2,v3(usm)等）」と、com2secで設定した「セキュリティ名」を組み合わせて、それに紐づく「グループ名」を設定します。

※セキュリティモデルとは、SNMPプロトコルのバージョンのことです。

### group書式

```
group  グループ名　セキュリティモデル　セキュリティ名
```
デフォルトの設定を例に取ると、「notConfigGroup」というグループ名は、「snmp v1,v2」にcom2secで設定してある「notConfigUser」からアクセス出来るという設定になります。

### デフォルト設定

```
group   notConfigGroup v1           notConfigUser
group   notConfigGroup v2c           notConfigUser
```

### 設定変更

「com2sec」で新たに作成したセキュリティ名を使用した「group」を作成していきます。

デフォルト設定は「#」でコメントとして、「local_group 」「mynet_group」というグループを設定作成し、それぞれ「snmp v1,v2」と「com2sec」で設定した「local」「mynet」を紐付けています。

### 設定変更後

```
#group   notConfigGroup v1           notConfigUser
#group   notConfigGroup v2c           notConfigUser

group   local_group v1           local
group   local_group v2c          local
group   mynet_group v1           mynet
group   mynet_group v2c          mynet
```
### view設定

どこまでのMIBツリーを参照許可させるかの設定をします。

### view書式

```
view view名 incl/excl MIBツリー範囲 マスク（optional）
```
「incl/excl」は指定したMIBツリーを許可する（incl）か、許可しない(excl)かの設定となります。
マスクに関しては、ちょっと説明が大変になるのでここでは割愛しますが、通常は特に設定を行わなくても良いでしょう。

### view設定変更

今回はデフォルトで設定されている「systemview」のほかに、全てのMIBツリーへのアクセスを許可した「all_view」という「view」を追加しています。

### 設定変更後

```
view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
view    all_view    included   .1
```

## access設定

com2sec　group view を組み合わせて、snmpへのアクセス制限を設定します。

### access書式

```
access グループ名 context sec.model sec.level prefix read   write  notif
```
「context」 「sec.model」 「sec.level」 「prefix」はsnmp v3を使用する際に使いますので、snmp v1,v2を使用する際はそれぞれ、「””」「any」「noauth」「exact」を設定します。

### 設定変更

デフォルト設定は「#」でコメントとして、「grop」と「view」で作成したルールを使用して、設定を行っていきます。

### 設定変更後

```
#access  notConfigGroup ""      any       noauth    exact  systemview none none
access  local_group ""      any       noauth    exact  all_view none none
access  mynet_group ""      any       noauth    exact  all_view none none
```
設定内容は「group」で設定した「local_group」と「mynet_group」は、「read」部分に「view」の項目でで作成した「all_view」を設定し、すべてのmibツリーのn読み込みのみ許可をするという設定になります。

## 設定反映

「net-snmp」を起動することで、設定を反映させます。

すでに「net-snmp」が起動している場合は、再起動を行うことで設定を反映させることができます。

### net-snmp起動

```
# systemctl start snmpd
```

## 動作確認

設定が完了しましたら「snmpwalk」を使用して、「net-snmp」が動作している確認します。

### snmpwalk書式

```
snmpwalk -v snmpバージョン -c コミュニティ名 対象サーバ
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/635477/62afc9ca-2e48-7ec3-7752-d283eecdfe35.png)

「net-snmp」が正常に動作していれば、上記のようにMIBの情報を取得することができます。

## 自動起動設定

```
# systemctl enable snmpd
```

次は実際にZabbixサーバから監視対象の情報を取得しに行きます。