サイズ: 4223
コメント:
|
← 2020-01-03 02:39:20時点のリビジョン14 ⇥
サイズ: 9790
コメント: ``
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 2: | 行 2: |
* ネットワーク機器のメンテナンスには、Windows上で[[https://archive.codeplex.com/?p=tftpd64|tftpd64]]を運用するのがパターンではある。 * しかし以下の点で使い勝手が悪く、FreeBSDで別途構成してみることにしてみた。 * NIC(ネットワークインターフェース)をアプリとOS(Windows)が奪い合うことによる不安定さ。 * tftpd64自体の不安定さ。 * 全体的にトラブルシューティングのしにくさ(パケットキャプチャーするのに別アプリのインストールなど)。 * ターミナルアプリの選択が必要で、かならずしも自身が使い慣れたターミナルアプリ*だけ*で完結するわけではない、など。 * ネットワーク機器をメンテナンスするために以下の機能を必要and/or用意した。 * 2ポートNIC構成。ただしNICはUSBイーサでは構成せず。 * 2つのNICの用途は、以下の通りである * ポート1: 外部接続用ポートで内部(ポート2)の通信をNATする。 * ポート2: 内部(ネットワーク機器)接続用ポートでこのポートに対して各種サービスを提供する。 |
ネットワーク機器のメンテナンスを行う際には、Windows上で[[https://archive.codeplex.com/?p=tftpd64|tftpd64]]を運用するのが定番ではある。 しかし以下の点で使い勝手が悪く、この問題を解決するためにFreeBSDで構成してみることにしてみた。 * NIC(ネットワークインターフェース)をアプリ(tftpd64)とOS(Windows)が奪い合うことによる不安定さ。 * tftpd64自体の不安定さ。 * 全体的にトラブルシューティングのしにくさ(パケットキャプチャーするのに別アプリのインストールなど)。 * ターミナルアプリの選択が必要で、かならずしも自身が使い慣れたターミナルアプリ*だけ*で完結するわけではない、など。 |
行 15: | 行 11: |
== 設定目標 == ネットワーク機器をメンテナンスするための、前述の不満を解消するために、以下の機能を必要`and/or`用意した。 * 2ポートNIC構成。ただしNIC自身はPCIe接続のモノとしてUSBイーサーの使用はお勧めしない。 * 経験的に、マルチキャスト関連の処理で不安定になる経験が多々ある。 * 活線挿抜しやすさによるUSB由来の不安定さ。 * 2つのNICの用途は、以下の通りである * ポート1: 外部接続用ポートで内部(ポート2)の通信を外部と通信する時にNATする。 * ダイナミックNAT(IPマスカレード)を想定し、1対1NATは行わない。 * ポート2: 内部(ネットワーク機器)接続用ポートでこのポートに対して以下のサービスを提供する。 * スパニングツリー(RSPAN) * 各種ネットワークサービス(後述) * またネットワーク機器に対するクライアントツールとして以下のツールを使用する。 * SSH(`OpenSSH`) * Telnet(`telnet`) * TFTP(`tftp-hpa`) * シリアル通信(`kermit`) * 合わせてネットワーク機器に対して以下のサービスを提供する。 * DHCP(`kea`) * NTP(`ntpd`) * Syslog(`syslogd`) * フルレゾルバ(`unbound`) * TFTP(`tftp-hpa`) |
|
行 18: | 行 38: |
* FreeBSDが認識可能な2ポートNIC搭載機 * 経験的にUSB NICの使用はお勧めしない。マルチキャスト関連の処理が不安定になる嫌いがある。 * FreeBSD 11.2-R および同OS中のサーバー * DNSキャッシュサーバー unbound * NTPサーバー ntpd * Syslogサーバー syslogd * [[https://www.freshports.org/net/isc-dhcp44-server|isc-dhcpd 4.4.1]] * [[https://www.freshports.org/ftp/tftp-hpa|tftp-hpa 5.2]] * [[https://www.freshports.org/comms/kermit|kermit 9.0.304]] |
* FreeBSDが認識可能な2ポートNIC搭載機([[https://www.links.co.jp/item/liva-z-n4200/|ECS LIVA Z-4]]を使用) * OS * FreeBSD(`12.1-R`) * NIC設定 * NIC1: DHCPによりIPアドレス自動取得・設定 * NIC2: `10.0.0.0/8` を割り当て、静的設定の上、DHCPサーバーで配布 * クライアント・サーバー共通 * SSH `OpenSSH 7.8p1` * TFTP [[https://www.freshports.org/ftp/tftp-hpa|tftp-hpa]] `5.2` * サーバーアプリケーション * Syslogサーバー `syslogd` * DNSキャッシュサーバー `local-unbound 1.8.1` * NTPサーバー `ntpd 4.2.8p12-a (1)` * DHCPサーバー [[https://www.freshports.org/net/kea/|kea]] `1.6.1` * クライアントツール * Kermit [[https://www.freshports.org/comms/kermit|kermit]] `9.0.304` |
行 30: | 行 57: |
== unbound == 1. /etc/rc.conf に対して設定の追加。 1. local_unbound のセットアップ。 1. 必須ではないが /etc/resolv.conf の確認(nameserver 127.0.0.1 の追加の確認)。 1. /etc/unbound/conf.d/local.conf ファイルを作成する。 上記作業完了後に local_unbound を立ち上げる。 |
== フルレゾルバ(local-unbound) == 1. `/etc/rc.conf` に対して設定の追加。 1. `local_unbound` のセットアップ。 1. 必須ではないが `/etc/resolv.conf` の確認({{{nameserver 127.0.0.1}}} の追加の確認)。 1. `/etc/unbound/conf.d/local.conf` ファイルを作成する。 上記作業完了後に `local_unbound` を立ち上げる。 |
行 39: | 行 66: |
{{{ local_unbound_enable="YES" |
`sysrc local_unbound_enable="YES"` コマンドを実行して設定する。 {{{#!highlight console numbers=disable # sysrc local_unbound_enable="YES" local_unbound_enable: NO -> YES |
行 45: | 行 74: |
{{{ service local_unbound setup |
`service local_unbound setup` コマンドを実行する。 {{{#!highlight console numbers=disable # service local_unbound setup Performing initial setup. destination: Extracting forwarders from /etc/resolv.conf. /usr/sbin/local-unbound-setup: cannot open /etc/resolv.conf: No such file or directory No forwarders found in resolv.conf, unbound will recurse. /var/unbound/lan-zones.conf created /var/unbound/control.conf created /var/unbound/unbound.conf created /etc/resolvconf.conf created /usr/sbin/local-unbound-setup: cannot open /etc/resolv.conf: No such file or directory /etc/resolv.conf created |
行 51: | 行 92: |
以下のファイルを作成する。 |
|
行 53: | 行 96: |
outgoing-range: 948 | |
行 55: | 行 99: |
}}} ※環境に合わせてinterface, access-control 行の追加または削除を実施すること。 |
access-control: 10.0.0.0/8 allow_snoop }}} * ※環境に合わせて`interface`、`access-control`行の追加または削除を実施すること。 * `outgoing-range` 設定については環境により要らない可能性がある。詳細は後述のメモを参考に対応すること。 |
行 60: | 行 106: |
{{{ service local_unbound start |
`service local_unbound start`コマンドを実行する。 {{{#!highlight console numbers=disable # service local_unbound start Starting local_unbound. Waiting for nameserver to start... good |
行 67: | 行 116: |
== ntpd == 1. /etc/rc.conf に対して設定の追加。 1. /etc/ntp.conf に対して設定の修正。 |
==== outgoing-range パラメータについてのメモ ==== {{{#!highlight console numbers=disable # service local_unbound start Starting local_unbound. [xxxxxxxxxx] local-unbound[XXXXX:0] warning: too many file descriptors requested. The builtinmini-event cannot handle more than 1024. Config for less fds or compile with libevent [xxxxxxxxxx] local-unbound[XXXXX:0] warning: continuing with less udp ports: 948 Waiting for nameserver to start... good }}} * 上記のような警告メッセージが表示される場合は「`continuing with less udp ports`」の指示に従い「`outgoing-range`」パラメータを設定することで、このメッセージを回避できる。 * このメッセージは `interface` 設定が3行超えて(無設定の場合デフォルトで2行分)設定されると発生する。 * `outgoing-range` パラメータに設定する値は、`1 interface` あたり `12 ports` 消費することから、{{{960-interface行数×12}}} として計算する。 == 時刻サーバー(ntpd) == 1. `/etc/rc.conf` に対して設定の追加。 1. `/etc/ntp.conf` に対して設定の修正。 |
行 82: | 行 144: |
{{{#!diff | {{{#!highlight diff numbers=disable |
行 109: | 行 171: |
== isc-dhcpd == | == kea == === /usr/local/etc/kea/keactrl.conf === {{{#!highlight diff numbers=disable --- /usr/local/etc/kea/keactrl.conf.sample 2019-12-25 02:00:58.163630000 +0900 +++ /usr/local/etc/kea/keactrl.conf 2019-12-26 23:01:14.180277000 +0900 @@ -26,7 +26,7 @@ dhcp4=yes # Start DHCPv6 server? -dhcp6=yes +dhcp6=no # Start DHCP DDNS server? dhcp_ddns=no }}} === /usr/local/etc/kea/kea-ctrl-agent.conf === {{{#!highlight diff numbers=disable --- /usr/local/etc/kea/kea-ctrl-agent.conf.sample 2019-12-25 02:00:58.169798000 +0900 +++ /usr/local/etc/kea/kea-ctrl-agent.conf 2020-01-03 02:29:49.055343000 +0900 @@ -26,15 +26,15 @@ "control-sockets": { "dhcp4": { "socket-type": "unix", - "socket-name": "/tmp/kea-dhcp4-ctrl.sock" + "socket-name": "/tmp/.kea-dhcp4-ctrl.sock" }, "dhcp6": { "socket-type": "unix", - "socket-name": "/tmp/kea-dhcp6-ctrl.sock" + "socket-name": "/tmp/.kea-dhcp6-ctrl.sock" }, "d2": { "socket-type": "unix", - "socket-name": "/tmp/kea-dhcp-ddns-ctrl.sock" + "socket-name": "/tmp/.kea-dhcp-ddns-ctrl.sock" } }, @@ -67,7 +67,7 @@ // - syslog (logs to syslog) // - syslog:name (logs to syslog using specified name) // Any other value is considered a name of a time - "output": "/var/log/kea-ctrl-agent.log" + "output": "syslog:daemon" // Shorter log pattern suitable for use with systemd, // avoids redundant information }}} === /usr/local/etc/kea/kea-dhcp4.conf === {{{#!highlight json numbers=disable }}} |
ネットワーク機器メンテナンスサーバー
ネットワーク機器のメンテナンスを行う際には、Windows上でtftpd64を運用するのが定番ではある。 しかし以下の点で使い勝手が悪く、この問題を解決するためにFreeBSDで構成してみることにしてみた。
- NIC(ネットワークインターフェース)をアプリ(tftpd64)とOS(Windows)が奪い合うことによる不安定さ。
- tftpd64自体の不安定さ。
- 全体的にトラブルシューティングのしにくさ(パケットキャプチャーするのに別アプリのインストールなど)。
- ターミナルアプリの選択が必要で、かならずしも自身が使い慣れたターミナルアプリ*だけ*で完結するわけではない、など。
設定目標
ネットワーク機器をメンテナンスするための、前述の不満を解消するために、以下の機能を必要and/or用意した。
- 2ポートNIC構成。ただしNIC自身はPCIe接続のモノとしてUSBイーサーの使用はお勧めしない。
- 経験的に、マルチキャスト関連の処理で不安定になる経験が多々ある。
- 活線挿抜しやすさによるUSB由来の不安定さ。
- 2つのNICの用途は、以下の通りである
- ポート1: 外部接続用ポートで内部(ポート2)の通信を外部と通信する時にNATする。
- ダイナミックNAT(IPマスカレード)を想定し、1対1NATは行わない。
- ポート2: 内部(ネットワーク機器)接続用ポートでこのポートに対して以下のサービスを提供する。
- スパニングツリー(RSPAN)
- 各種ネットワークサービス(後述)
- ポート1: 外部接続用ポートで内部(ポート2)の通信を外部と通信する時にNATする。
- またネットワーク機器に対するクライアントツールとして以下のツールを使用する。
SSH(OpenSSH)
Telnet(telnet)
TFTP(tftp-hpa)
シリアル通信(kermit)
- 合わせてネットワーク機器に対して以下のサービスを提供する。
DHCP(kea)
NTP(ntpd)
Syslog(syslogd)
フルレゾルバ(unbound)
TFTP(tftp-hpa)
構築環境
- ハードウェア
FreeBSDが認識可能な2ポートNIC搭載機(ECS LIVA Z-4を使用)
- OS
FreeBSD(12.1-R)
- NIC設定
- NIC1: DHCPによりIPアドレス自動取得・設定
NIC2: 10.0.0.0/8 を割り当て、静的設定の上、DHCPサーバーで配布
- クライアント・サーバー共通
SSH OpenSSH 7.8p1
TFTP tftp-hpa 5.2
- サーバーアプリケーション
Syslogサーバー syslogd
DNSキャッシュサーバー local-unbound 1.8.1
NTPサーバー ntpd 4.2.8p12-a (1)
DHCPサーバー kea 1.6.1
- クライアントツール
Kermit kermit 9.0.304
セットアップ
フルレゾルバ(local-unbound)
/etc/rc.conf に対して設定の追加。
local_unbound のセットアップ。
必須ではないが /etc/resolv.conf の確認(nameserver 127.0.0.1 の追加の確認)。
/etc/unbound/conf.d/local.conf ファイルを作成する。
上記作業完了後に local_unbound を立ち上げる。
/etc/rc.conf
sysrc local_unbound_enable="YES" コマンドを実行して設定する。
# sysrc local_unbound_enable="YES"
local_unbound_enable: NO -> YES
local_unbound のセットアップ
service local_unbound setup コマンドを実行する。
# service local_unbound setup
Performing initial setup.
destination:
Extracting forwarders from /etc/resolv.conf.
/usr/sbin/local-unbound-setup: cannot open /etc/resolv.conf: No such file or directory
No forwarders found in resolv.conf, unbound will recurse.
/var/unbound/lan-zones.conf created
/var/unbound/control.conf created
/var/unbound/unbound.conf created
/etc/resolvconf.conf created
/usr/sbin/local-unbound-setup: cannot open /etc/resolv.conf: No such file or directory
/etc/resolv.conf created
/etc/unbound/conf.d/local.conf
以下のファイルを作成する。
server: outgoing-range: 948 interface: 0.0.0.0 access-control: 127.0.0.0/8 allow_snoop access-control: 10.0.0.0/8 allow_snoop
※環境に合わせてinterface、access-control行の追加または削除を実施すること。
outgoing-range 設定については環境により要らない可能性がある。詳細は後述のメモを参考に対応すること。
local_unbound の立ち上げ
service local_unbound startコマンドを実行する。
# service local_unbound start
Starting local_unbound.
Waiting for nameserver to start... good
※なお再起動により、自動的に立ち上がる。
outgoing-range パラメータについてのメモ
# service local_unbound start
Starting local_unbound.
[xxxxxxxxxx] local-unbound[XXXXX:0] warning: too many file descriptors requested. The builtinmini-event cannot handle more than 1024. Config for less fds or compile with libevent
[xxxxxxxxxx] local-unbound[XXXXX:0] warning: continuing with less udp ports: 948
Waiting for nameserver to start... good
上記のような警告メッセージが表示される場合は「continuing with less udp ports」の指示に従い「outgoing-range」パラメータを設定することで、このメッセージを回避できる。
このメッセージは interface 設定が3行超えて(無設定の場合デフォルトで2行分)設定されると発生する。
outgoing-range パラメータに設定する値は、1 interface あたり 12 ports 消費することから、960-interface行数×12 として計算する。
時刻サーバー(ntpd)
/etc/rc.conf に対して設定の追加。
/etc/ntp.conf に対して設定の修正。
上記作業完了後に ntpd を立ち上げる。
/etc/rc.conf
ntpd_enable="YES" ntpd_flags="-N -p /var/run/ntpd.pid -f /var/db/ntpd.drift" ntpd_sync_on_start="YES"
/etc/ntp.conf
--- /etc/ntp.conf.orig 2018-08-16 19:07:30.542265000 +0900
+++ /etc/ntp.conf 2018-08-16 14:33:41.609429000 +0900
@@ -29,7 +29,7 @@
#
# The option `iburst' is used for faster initial synchronization.
#
-pool 0.freebsd.pool.ntp.org iburst
+pool ntp.nict.jp iburst # NICT
#
# If you want to pick yourself which country's public NTP server
@@ -97,6 +97,8 @@
#
#server 127.127.1.0
#fudge 127.127.1.0 stratum 10
+server 127.127.1.0
+fudge 127.127.1.0 stratum 10
# See http://support.ntp.org/bin/view/Support/ConfiguringNTP#Section_6.14.
# for documentation regarding leapfile. Updates to the file can be obtained
※ここではNICTのNTPサーバーを指名している。環境に応じて修正すること。
syslogd
kea
/usr/local/etc/kea/keactrl.conf
--- /usr/local/etc/kea/keactrl.conf.sample 2019-12-25 02:00:58.163630000 +0900
+++ /usr/local/etc/kea/keactrl.conf 2019-12-26 23:01:14.180277000 +0900
@@ -26,7 +26,7 @@
dhcp4=yes
# Start DHCPv6 server?
-dhcp6=yes
+dhcp6=no
# Start DHCP DDNS server?
dhcp_ddns=no
/usr/local/etc/kea/kea-ctrl-agent.conf
--- /usr/local/etc/kea/kea-ctrl-agent.conf.sample 2019-12-25 02:00:58.169798000 +0900
+++ /usr/local/etc/kea/kea-ctrl-agent.conf 2020-01-03 02:29:49.055343000 +0900
@@ -26,15 +26,15 @@
"control-sockets": {
"dhcp4": {
"socket-type": "unix",
- "socket-name": "/tmp/kea-dhcp4-ctrl.sock"
+ "socket-name": "/tmp/.kea-dhcp4-ctrl.sock"
},
"dhcp6": {
"socket-type": "unix",
- "socket-name": "/tmp/kea-dhcp6-ctrl.sock"
+ "socket-name": "/tmp/.kea-dhcp6-ctrl.sock"
},
"d2": {
"socket-type": "unix",
- "socket-name": "/tmp/kea-dhcp-ddns-ctrl.sock"
+ "socket-name": "/tmp/.kea-dhcp-ddns-ctrl.sock"
}
},
@@ -67,7 +67,7 @@
// - syslog (logs to syslog)
// - syslog:name (logs to syslog using specified name)
// Any other value is considered a name of a time
- "output": "/var/log/kea-ctrl-agent.log"
+ "output": "syslog:daemon"
// Shorter log pattern suitable for use with systemd,
// avoids redundant information
/usr/local/etc/kea/kea-dhcp4.conf
tftp-hpa