1と14のリビジョン間の差分 (その間の編集: 13回)
2018-10-04 23:33:08時点のリビジョン1
サイズ: 1242
コメント:
2020-01-03 02:39:20時点のリビジョン14
サイズ: 9790
コメント: ``
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 2: 行 2:
 * ネットワーク機器メンテナンスするためのサーバー構成する。
 * この手のセットアップ
はWindows上で[[https://archive.codeplex.com/?p=tftpd64|tftpd64]]を運用するのがパターンではある。
 * しかし以下の点で使い勝手が悪く、FreeBSDで別途構成してみることにしてみた。
   * ネットワークインターフェースをアプリとOS(Windows)が奪い合うことによる不安定さ。
   * tftpd64自体の不安定さ。
   * 全体としてトラブルシューティングのしにくさ(パケットキャプチャーするのに別アプリのインストールなど)。
ネットワーク機器メンテナンスを行う際にWindows上で[[https://archive.codeplex.com/?p=tftpd64|tftpd64]]を運用するのが定番ではある。
しかし以下の点で使い勝手が悪く、この問題を解決するためにFreeBSDで構成してみることにしてみた。

 * NIC(
ネットワークインターフェースをアプリ(tftpd64)とOS(Windows)が奪い合うことによる不安定さ。
 * tftpd64自体の不安定さ。
 * 全体的にトラブルシューティングのしにくさ(パケットキャプチャーするのに別アプリのインストールなど)。
 * ターミナルアプリの選択が必要で、かならずしも自身が使い慣れたターミナルアプリ*だけ*で完結するわけではない、など。
行 11: 行 12:
== 設定目標 ==
ネットワーク機器をメンテナンスするための、前述の不満を解消するために、以下の機能を必要`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`)
行 12: 行 37:
 * 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`

= セットアップ =

== フルレゾルバ(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` を立ち上げる。

=== /etc/rc.conf ===
`sysrc local_unbound_enable="YES"` コマンドを実行して設定する。

{{{#!highlight console numbers=disable
# sysrc local_unbound_enable="YES"
local_unbound_enable: NO -> YES
}}}

=== local_unbound のセットアップ ===
`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
}}}

=== /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`コマンドを実行する。

{{{#!highlight console numbers=disable
# service local_unbound start
Starting local_unbound.
Waiting for nameserver to start... good
}}}

※なお再起動により、自動的に立ち上がる。

==== 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` に対して設定の修正。

上記作業完了後に 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 ===
{{{#!highlight diff numbers=disable
--- /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 ===
{{{#!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
}}}

== tftp-hpa ==

== kermit ==

ネットワーク機器メンテナンスサーバー

ネットワーク機器のメンテナンスを行う際には、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)
      • 各種ネットワークサービス(後述)
  • またネットワーク機器に対するクライアントツールとして以下のツールを使用する。
    • 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)

  1. /etc/rc.conf に対して設定の追加。

  2. local_unbound のセットアップ。

  3. 必須ではないが /etc/resolv.conf の確認(nameserver 127.0.0.1 の追加の確認)。

  4. /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
  • ※環境に合わせてinterfaceaccess-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)

  1. /etc/rc.conf に対して設定の追加。

  2. /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

kermit

ネットワーク機器メンテナンスサーバー (最終更新日時 2020-01-03 02:39:20 更新者 NorikatsuShigemura)