手当たり次第に書くんだ

CentOS6 OpenVPNとQuaggaのルーティングの問題

OpenVPNでクライアントに割り当てるIPアドレスを下記で設定していると、

[root@centos ~]# vim /etc/openvpn/server.conf

server 192.168.200.0 255.255.255.0

OpenVPNを起動した場合、tun0に関するルーティングテーブルは次のようになります。

[root@centos ~]# netstat -r

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.200.2   *               255.255.255.255 UH        0 0          0 tun0
192.168.200.0   192.168.200.2   255.255.255.0   UG        0 0          0 tun0

問題の発生

このルーティングテーブルは、Quagga上からはKernelのルーティングテーブルとして認識され、自宅のネットワークでは、この経路をQuaggaのOSPFで配送する設定にしています。ところが、1日おきにルーティングテーブルが配送されない問題が発生しました。その際のログは下記の通りです。

[root@centos ~]# cat /var/log/messages

May 12 04:05:38 xxxxxxxx zebra[1218]: netlink_interface_addr can't find interface by index 4
May 12 04:05:38 xxxxxxxx zebra[1218]: netlink-listen filter function error
May 12 04:05:40 xxxxxxxx zebra[1218]: warning: PtP interface tun0 with addr 192.168.200.1/32 needs a peer address

原因

現在、OpenVPNのログローテーションは下記で設定しています。

[root@centos ~]# vim /etc/logrotate.d/openvpn

/var/log/openvpn.log {
    missingok
    notifempty
    sharedscripts
    postrotate
        /etc/rc.d/init.d/openvpn restart 2>&1 > /dev/null || true
    endscript
}

この設定は、よくインターネット上の記事にある設定ですが、特に意識せずに設定していました。見ての通り再起動していますね。つまりOpenVPNが再起動するタイミングでOpenVPNのtun0のインデックス番号が変わってしまい、192.168.200.0/24が配送されなくなっていました。Quaggaのzebraとospfdを再起動すると復活するの間違いありません。ちなみにスタティックルートの場合は、この問題は発生しないですね。

解決策

インターネットから下記の設定例を見つけました。ログローテーションも問題なく行われ、OSPFでのルーティング配送も問題ありません。

[root@centos ~]# vim /etc/logrotate.d/openvpn

/var/log/openvpn/*.log {
    size 1M
    rotate 10
    copytruncate
    missingok
}
CentOS6 OpenVPNとQuaggaのルーティングの問題

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る