YAMAHA RTX 1210に乗り換え (6) DHCPサーバー設定編

DHCPサーバーの機能はこれまでルーターのXR-730に丸投げしてきました。ローカルで動いているサーバーの一部はMACアドレスをDHCPサーバーに登録して固定でIPを振るように設定していました。これをRTX1210でも実現せねばなりません。RTX1200ではWeb GUIからもMacアドレスの登録ができたそうですが,RTX1210ではコンソールからのみ設定ができます。

Web GUIでDHCPサーバー自体は有効化できるので配布するIPアドレスの範囲などを適当に設定してDHCPサーバーを起動しておけばコンソールからの設定の手間が少し省けます。Web GUIで設定してくれるのは

dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.XXX.YYY-192.168.XXX.ZZZ/24

の3行分です。MACアドレスを指定して固定のIPを貸し出す設定をする場合,XR-730は上記のような貸し出すIPの範囲(YYYからZZZ)の外のIPを設定することができますが,RTX1210はまずscopeとして貸し出すIPの範囲を決めて,その範囲内のIPを使って固定で貸し出すようにせねばなりません。このあたりはルーターのベンダーの考え方の違いということでしょう。ちょっと悩みました。

RTX1210はscope 1のように指定することでIPの範囲をグループ化することができます。したがって,固定のIPとして貸し出す範囲と普通の貸し出しの範囲を別のscopeとして設定することにしました。

dhcp scope 1 192.168.XXX.YYY-192.168.XXX.ZZZ/24
dhcp scope 2 192.168.XXX.yyy-192.168.XXX.zzz/24

としてYYYからZZZは普通の貸し出し範囲,yyyからzzzは固定での貸し出し範囲としました。固定でIPを貸し出すにはbindを指定し,そのあとにscopeの番号を指定します。scope 2から固定IPを貸し出すならば,以下のように設定します。

dhcp scope bind 2 192.168.XXX.AAA ethernet aa:bb:cc:dd:ee:ff

とします。ethernetのあとの16進数の数字が固定IPを貸し出したいデバイスのMacアドレスです。これを必要なデバイスの数だけ設定します。

ちゃんとIPの貸し出しができているかを確かめるためには

dhcp status dhcp

とします。また,不要な設定は

no dhcp ...

のように冒頭にnoをつけてコマンドを実行すればOKです。show configで設定が消えたかどうかを確認できます。

DHCPを使ってIPを貸し出すときにDNSのIPアドレスもいっしょに知らせるのが普通ですから,あわせて設定します。

まずdns serverを設定します。空白で区切って4つまでサーバーを設定できます。またLANのドメインも指定します。

dns server 192.168.XXX.BBB 192.168.YYY.CCC xxx.yyy.zzz.aaa
dns domain hoge.jp

この例ではLAN内部のDNSサーバーを指定して,最後に外部のサーバーを指定しています。必要ならもう1つDNSサーバーを登録可能です。これらの情報をdhcpクライアントに通知するように

dns notice order dhcp server

とします。最後のserverというところがdns serverで指定したDNSサーバーのリストに対応します。デフォルトでは

dns notice order dhcp me server

となっています。meというのはルーター自身です。したがって,ルーター,dns serverで指定したサーバーの順でdhcpクライアントには通知される,ということです。私の環境ではルーターにはdnsサーバーはさせないのでmeは書いていません。そのためあわせてルーターのweb GUIでdnsサーバーを停止する設定をしておきます。コンソールでは,

dns service off

とすればdnsサーバーが停止します。

これによってdhcpクライアントはdnsサーバーの情報を受け取ることができます。macOSがクライアントであれば,UNIXシステムでは伝統的に使われている/etc/resolv.confに設定が反映されて

domain hoge.jp
nameserver 192.168.XXX.BBB
nameserver 192.168.YYY.CCC
nameserver xxx.yyy.zzz.aaa

という具合に設定が記述されます。

これでDHCP関係の設定はOKなはずです。

YAMAHA RTX 1210に乗り換え (5) Catalinaでsshd編

2台のRTX1210と1台のRTX1100が曲がりなりにもIPsecで接続しているように見えている状況になりました。しかし,いきなり本番の環境に持っていくのは危険すぎるので,WAN側のネットワークを同じネットワークに設定した上で3つの拠点間でIPsec接続ができるかどうかを確認します。

そのためには,各ルーターのLAN1の下に適当な端末を繋がなくてはなりません。手元のノートPCはいずれもmac bookばかりなのでこれをサーバーにしてリモートアクセスができるかどうかを確認しようとしました。

macOS Catalina 10.15.7を載せた2台のMac Book Pro (1台はMid 2012, 1台はEarly 2015)を使うことにしました。sshが通れば大抵のことはOKなので,まずはそれぞれのmac上でsshdを起動させます。そのためには,「システム環境設定」ー「共有」とたどって「リモートログイン」のチェックボックスをクリックすればOKのはずです。

チェックを入れる前には,「リモートログイン:オフ」と書かれているところが,リモートログイン(つまりsshd)が起動すると「オン」になるはずです。ところが,なぜか,「リモートログインを開始しています...」と表示されたまままったく変わらず,いつまでたっても起動しません。このままでは,チェックを外すこともできず何もできないのですが,システム環境設定を終了すると何事もなかったように「リモートログイン:オフ」の状態に戻っています。

何が問題なのかまったくわからないのですが,Google先生に聞いても特にそのような症状について書かれたものはないようでした。

ターミナルを起動してsshdを手動で再起動するにはsudo launchctl stop com.openssh.sshdを使うようです。起動しているものを再起動する方法のようで動いていないものを起動する,という話ではないようにも思えます。実際,このコマンドを叩いてもなにも起こりません。エラーがでるわけでもなく何もおこらないのです。

そこで,where sshdでsshdがどこにあるか調べると/usr/sbin/sshdということなので,これを無理矢理起動させてみます。

sudo /usr/sbin/sshd

そうすると,
sshd: no hostkeys available -- exiting.
というエラーが返ってきて終了してしまいます。どうも鍵がないようです。作ってくれよ,と思いますがないものはないのです。そこでもうヤケクソで普通のUNIX的対応をしてしまいます。

sudo ssh-keygen -A

とやって無理矢理鍵を生成します。そのうで改めてsshdを起動すると今度は文句を言わずに起動します。外部からアクセスをしようとするとちゃんとアクセスできます。「システム環境設定」ー「共有」ー「リモートログイン」の画面を表示してみてももちろん「リモートログイン:オフ」のままです。もう,セキュリティってなんやねん,というわけのわからん状態です。あれこれ面倒なコマンドを使って起動せねばならないくせに,直接コマンドで起動させても起動できちゃうってのはもうOSの自己矛盾そのものです。

良い子はたぶんこんなことをやってはいけないのでしょうけれども,私はそんな悠長なことは言ってられないので気にせずやってしまいます。動けばいいんですから。

ちなみに,他のmacOSではどうだったかというのも試してみました。

MacBook Pro 13inch Early 2015 + macOS Monterey 12.5
システム環境設定の共有からリモートログインにチェックを入れればすぐに起動してリモートアクセスも問題なくできました。

MacBook Air 11inch Late 2010 + macOS High Sierra 10.13.6
システム環境設定の共有からリモートログインにチェックを入れればすぐに起動してリモートアクセスも問題なくできました。

MacBook Pro 13inch 2017 + macOS High Sierra 10.13.6
システム環境設定の共有からリモートログインにチェックを入れればすぐに起動してリモートアクセスも問題なくできました。

というわけでCatalinaだけがなんだか挙動不審です。どうもよくわからんことになっていまう。兎に角,これで3拠点間での接続の確認ができそうです。完全に本質と違うところではまってしまいました。

sshで接続ができればサーバー側でX serverを起動しておけば,ssh -Xで接続してローカル側のXの画面にX windowを表示することも可能です。「画面共有」としてvncを使うまでもなくXが動けば面倒は何もありません。もちろん,Xのアプリケーションしかローカルに表示できませんが,私の使い方ではそれさえできればOKなのでまったく差し支えありません。

これで接続の確認ができれば実戦投入も現実的になってきます。

YAMAHA RTX 1210に乗り換え (4) RTX1100とIPsec接続編

かなりしょぼいサテライトとの接続をするためにIPsecでRTX1210とRTX1100をVPN接続する必要があるため,RTX1100も設定します。なにも古い古いルーターを使わなくてもよさそうなものですが,手元にあって遊んでいるRTXはこれしかなかったので何も考えずに投入しました。すべてのポートが100Mbpsというのが時代を感じさせてくれるルーターですが,サテライトで必要なネットワークは細くても差し支えなく,兎に角,繋がればOKという発想です。

RTX1100にはWeb GUIはないのでコンソールから設定します。telnetでログインしてLAN1のIPアドレスを変更すると,ip lan1 address 192.168.xxx.xxxを叩いた瞬間に設定をしているPCからRTXのコンソールに繋がらなくなります(当たり前)。そのため設定変更を保存できないので,結果として永遠にLAN1のIPアドレスを変更できない,という罠にはまります。そのため,どうしてもシリアルコンソールでログインしてIPアドレスを設定せねばなりません。

macOSでシリアル接続をする方法は,以前にHigh Sierraでシリアル通信で書いた通りで,USB-シリアル変換ケーブルのドライバをインストールしたうえで,変換ケーブルにシリアルのクロスケーブルをつないでRTX1100のシリアルポートと接続します。手元のProlific PL2303ベースの変換ケーブルのドライバはチップメーカーがApp Storeにリンクを張っているのですが,リンク先のApp Storeは,お前の地域ではダウンロードできない,というようなことが表示されてドライバを入手できません。このチップを使った変換ケーブルを売っているメーカーらしきところのサーバーからダウンロードするしかないのですが,ちょっと怖いものがあります。

RTX1100は9600bpsで接続すればよいのでターミナル上で
screen /dev/tty.usbmodem 9600
とやれば接続し,パスワードを聞いてきます。パスワードを設定していなければそのままリターンを叩けばログインできます。administoratorコマンドを入力するとさらに管理者パスワードを聞いてきますが,これもパスワードを設定していなければそのままリターンを叩くだけです。あとは最低限の設定だけを入れておきます。以下で大文字は適当な値を代入すべきところです。

console character euc
date YYYY/MM/DD
time HH:MM:SS
ip route default gateway GATEWAY_IP # LAN2のデフォルトゲートウェイのIPアドレス
ip route 192.168.XXX.0/24 gateway tunnel 1 # IPsecのtunnel 1の対向側のLANのネットワークアドレス
ip lan1 address 192.168.YYY.1/24 # LAN1のアドレス
ip lan2 address WAN_IP/24 # LAN2のWAN側アドレス
tunnel select 1
ipsec tunnel 101
ipsec sa policy 101 1 esp aes-cbc sha-hmac # 暗号アルゴリズムと認証アルゴリズム
ipsec ike duration ipsec-sa 1 24000
ipsec ike duration isakmp-sa 1 24000
ipsec ike local address 1 192.168.YYY.1 # IPsec接続に使うLAN1のアドレス
ipsec ike pre-shared-key 1 text SHARED_KEY_TEXT # 対向側とシェアをする鍵の文字列
ipsec ike remote address 1 REMOTE_IP # 対向側のグローバルIPアドレス
tunnel enable 1
nat descriptor type 1 nat-masquerade
nat descriptor address outer 1 WAN_IP
nat descriptor address inner 1 LAN_IP 192.168.YYY.1-192.168.YYY.254
nat descriptor masquerade static 1 1 WAN_IP udp 500
nat descriptor masquerade static 1 2 WAN_IP esp
ipsec auto refresh on
dhcp service server
dhcp scope 1 192.168.YYY.96-192.168.YYY.127/24 # DHCPで払い出すIPアドレスの範囲(96-127の場合)

間違った設定をしてしまった時は,その設定コマンドの前にnoをつけて実行すれば消えます。例えば,
ip lan3 address HOGE_IP
が不要だとすると,
no ip lan3 address HOGE_IP
とすればOKです。show configで設定が消えたことを確認できます。

管理ユーザーからexitすると保存するかどうか聞いてくるのでYを叩いて保存します。

以上で対向側の拠点にも同じ設定をしておけば勝手に接続を開始します。