■ServerのDHCPをIPv6対応させる
ここまでの作業でだいぶデュアルスタック感はあるものの、Server以外のホストはDNSにIPv6アドレス登録されていないから、名前解決してもIPv4アドレスしか返ってこない。
逆になぜIPv4のアドレスが返ってくるかというと、ServerがDynamicDNSサービスを提供しているから。DHCPv4がアドレスを振り出すと、それをDNSに登録してくれている。
これと同じことをIPv6についても行えばいい…と思ったが、これが大ごとだった。
まず、現在Ubuntu16.04でインストールされる DHCP Server は4.3.3。このバージョンはデュアルスタックにおけるDDNSの動作に対応していない。4.4からこの機能が実装されている。
そこで、このバージョンをアンインストールして、最新バージョンをソースからコンパイルしてインストールする。こんなところからやるのか…。
念の為 /etc/dhcp のディレクトリまるごと、及び、/etc/init.d/isc-dhcp-server 、/etc/default/isc-dhcp-server をバックアップする。
※実際には使わずに済んだ。
その上で、以下を実行。
$ wget https://www.isc.org/downloads/file/dhcp-4-4-1/ ← この日のバージョンは4.4.1。ダウンロード。ファイル名がindex.htmlになるからリネームする。
$ sudo apt remove isc-dhcp-server
$ sudo apt autoremove ← 付随するライブラリが不要扱いに…
・・・
以下のパッケージは「削除」されます:
libirs-export141 libisccfg-export140
・・・
インストールは以下を参考に実行。
FreeBSD - System Administration / ISC DHCP IPv4 & IPv6 Server on a Dual-Stack Network
$ mv index.html dhcp-4.4.1.tar.gz
$ tar zxvf dhcp-4.4.1.tar.gz
$ cd dhcp-4.4.1/
$ ./configure
$ make
$ sudo make install
/etc/default/isc-dhcp-server のパラメータ変更。OPTIONSの設定値が-6になっていて動作しなかったため。
OPTIONS="-4"
INTERFACES="eth0"
DHCPv4動作にちょっと変更を加える。ざっくり全部を載せた上で、ポイントになりそうなところだけコメント。結果から見れば変更点は3行だけ。
/etc/dhcp/dhcpd.conf
ddns-update-style interim;
ddns-domainname "hogeserver.hogeddns.jp.";
ddns-rev-domainname "ip6.arpa.";
ddns-dual-stack-mixed-mode true; ← これがデュアルスタック利用フラグ。trueで。
update-conflict-detection false; ← IPv6との競合が必ず発生するからfalseで。
update-static-leases on;
option domain-name "hogeserver.hogeddns.jp";
option domain-name-servers 172.16.1.100;
default-lease-time 86400;
max-lease-time 604800;
lease-file-name "/var/lib/dhcp/dhcpd.leases"; ← ソースからコンパイルしたらデフォルトのディレクトリがない。既存ディレクトリを明示した。
authoritative;
log-facility local7;
#-----------------------------------------
# This is a my network subnet declaration.
#-----------------------------------------
subnet 172.16.0.0 netmask 255.255.0.0 {
# --- default gateway
option routers 172.16.1.1;
# --- WINS server
option netbios-name-servers 172.16.1.100;
# --- NTP server
option ntp-servers 172.16.1.100;
# --- Lease range setting
range 172.16.1.40 172.16.1.80;
}
#-----------------------------------------
# Fixed address
#-----------------------------------------
host MainPC {
hardware ethernet nn:nn:nn:nn:nn:nn;
fixed-address 172.16.1.2;
}
#-----------------------------------------
# Dynamic DNS settings.
#-----------------------------------------
include "/etc/dhcp/ddns-keys/rndc.key";
zone hogeserver.hogeddns.jp. { ← 最後のドットを忘れない。
primary localhost;
key "rndc-key";
}
zone 16.172.in-addr.arpa. {
primary localhost;
key "rndc-key";
}
DHCPv4サービスを実行。
$ sudo systemctl start isc-dhcp-server
Failed to start isc-dhcp-server.service: Unit isc-dhcp-server.service is masked. ← おっと、マスク…
$ sudo systemctl unmask isc-dhcp-server
$ sudo systemctl start isc-dhcp-server ← 改めて実行
・・・
$ sudo ln -s /usr/local/sbin/dhcpd /usr/sbin/dhcpd ← シンボリックリンクを作成
DHCPv6のためにサービス実行のためのファイルを作成。
$ sudo cp /etc/init.d/isc-dhcp-server /etc/init.d/isc-dhcp-server6
$ sudo cp /etc/default/isc-dhcp-server /etc/default/isc-dhcp-server6
編集。/etc/init.d/isc-dhcp-server6 は以下の3行に赤文字を追加。
DHCPD_DEFAULT="${DHCPD_DEFAULT:-/etc/default/isc-dhcp-server6}"
DHCPD_CONF=${DHCPD_CONF:-/etc/dhcp/dhcpd6.conf}
DHCPD_PID="${DHCPD_PID:-/var/run/dhcpdi6.pid}"
/etc/default/isc-dhcp-server6 は以下を4から6に変更。
OPTIONS="-6"
動作設定。
/etc/dhcp/dhcpd6.conf
ddns-update-style interim;
ddns-domainname "hogeserver.hogeddns.jp.";
ddns-rev-domainname "ip6.arpa.";
ddns-dual-stack-mixed-mode true; ← これがデュアルスタック利用フラグ。trueで。
update-conflict-detection false; ← IPv4との競合が必ず発生するからfalseで。
update-static-leases on;
allow client-updates; ← 意味ないかも。色々いじった最後に残ってた…
do-forward-updates true; ← 同上
option domain-name "hogeserver.hogeddns.jp";
option dhcp6.name-servers fdxx:xxxx:xxxx:xxxx::100;
default-lease-time 86400;
max-lease-time 604800;
lease-file-name "/var/lib/dhcp/dhcpd6.leases"; ← ソースからコンパイルしたらデフォルトのディレクトリがない。既存ディレクトリを明示した。
authoritative;
log-facility local6; ← 動作確認のために分けた。困っていない人は7のままでも大丈夫。
#-----------------------------------------
# This is a my network subnet declaration.
#-----------------------------------------
subnet6 fdxx:xxxx:xxxx:xxxx::/64 {
range6 fdxx:xxxx:xxxx:xxxx::1:1 fdxx:xxxx:xxxx:xxxx::1:1000;
option dhcp6.domain-search "hogeserver.hogeddns.jp";
}
#-----------------------------------------
# Fixed address
#-----------------------------------------
host MainPC {
hardware ethernet xx:xx:xx:xx:xx:xx;
fixed-address6 fdxx:xxxx:xxxx:xxxx::2;
}
#-----------------------------------------
# Dynamic DNS Settings.
#-----------------------------------------
include "/etc/dhcp/ddns-keys/rndc.key";
zone hogeserver.hogeddns.jp. {
primary6 ::1;
key "rndc-key";
}
zone 0.e.7.0.0.6.d.f.c.4.f.c.7.4.d.f.ip6.arpa. { ← 名前の付け方はDNSのところで書いた
primary6 ::1;
key "rndc-key";
}
v4とv6でログの出力先を分け、ちゃんと動作するまで見守りたい。
/etc/rsyslog.d/isc-dhcp-server.conf をGithub / DHCP Server Configuration を参考にして作成。
# Logging for DHCP server
local7.* /var/log/dhcpdv4.log
local6.* /var/log/dhcpdv6.log ← こなれてくるまで…とログを分けた。
rsyslogサービスを再起動。
$ sudo systemctl restart rsyslog
DHCPv6サービスを登録し、leasesファイルを作ってサービスを開始。
$ sudo systemctl daemon-reload
$ sudo touch dhcpd6.leases
$ sudo systemctl start isc-dhcp-server6
さて、DHCPv6はポート547で動作する。そこで、以下の通りポートを開放する。
$ sudo ufw allow to any proto udp port 547 from any
ルールを追加しました
ルールを追加しました (v6)
見ての通り、v6だけでなくv4も開放してしまったので、v4部分を削除する。
$ sudo ufw status ← 一覧を表示させる
$ sudo ufw delete 18 ← v4部分が何番目か…でその数字を入れる。今回は18だった。
ufwでv6だけを操作するためには、proto ipv6 と書くか、from または to にIPv6のアドレスを書けばよいのだけれど、このルールはどのアドレスに対しても実行していいと思ったので、上記の通り足してからIPv4だけを削除することにした。
ということで完了。あれ?こうやって書いて整理してみると全然大ごとじゃなくてサクサク感があるな…。
■ServerでRAを返す
現在、Serverを含めたLAN内のIPv6を有効にしたホストは、RAの情報に基づいてIPv6アドレスを自動構成している。しかし、RouterのDHCPv4を無効にしているからか(?)、RouterはDHCPv6アドレスを振り出していない。
このIPv6アドレスを自動構成するもととなったRAが何なのかを確認するため、テスト用にUbuntu18.04デスクトップ版をVMware Playerで立ち上げてみた。
付けたコメントは以下のサイトから転載している。
ITmedia エンタープライズ / SolarisからIPv6ルーターのようにRAを配信する
UnixPower on Networking / CentOS6 ISC-DHCP ( DHCPv6 )
ネットワークエンジニアとして / IPv6 addressing - Stateless / Statefull / DHCPv6
$ sudo apt install radvd
$ sudo radvdump ens33
#
# radvd configuration generated by radvdump 2.16
# based on Router Advertisement from fe80::rout:er1x:rout:er1x ← Router(1)のLLAから送出
# received by interface ens33
#
interface ens33
{
AdvSendAdvert on; ← 周期的にルーター広告を送信し、ルーター要請にも応じる
# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
AdvManagedFlag off; ← Mフラグ: RAを受信したホストが、RA以外の方法(DHCPv6など)によって自動的にアドレスを設定されることを許可するかどうか。許可しない。
AdvOtherConfigFlag on; ← Oフラグ: RAを受信したホストが、RA以外の方法によってアドレス以外の情報を自動的に設定されることを許可するかどうか。許可する。
AdvReachableTime 0; ← RAを受信したホストが持つ、隣接するIPv6ノードへの到達性の有効期間(ミリ秒)。無指定。
AdvRetransTimer 0; ← RAを受信したホストがリンク層アドレス(MACアドレス)の問い合わせを行うメッセージを送信する時間。未指定。
AdvCurHopLimit 64; ← RAを受信したホストのHop Limit値を指定する設定値。64。
AdvDefaultLifetime 9000; ← RAを受信したホストがRAの送信元をデフォルトゲートウェイとして使用可能な有効期間。2時間半。
AdvHomeAgentFlag off; ← RAを送信するルーターがIPv6ホームエージェントかどうか示す。機能しない。
AdvDefaultPreference medium; ← RAを送信するルーターの優先度。中。
AdvSourceLLAddress on; ← RAを送信するときにローカルリンクアドレスを含める
prefix 24xx:xxxx:xxxx:xxxx::/64 ← サブネットプレフィックス(先頭64ビット)を表しているらしい
{
AdvValidLifetime 14400; ← RAを受信したホストが、配信されたプレフィックスをIPv6アドレスの自動生成に使用できる期間。4時間。
AdvPreferredLifetime 12600; ← RAを受信したホストが、配信されたプレフィックスをIPv6アドレスの自動生成に使用することが推奨される期間。3時間半。
AdvOnLink on; ← RAで配信されるプレフィックスが同一リンク上に存在するかどうか。存在する。
AdvAutonomous on; ← RAを受信したホストが、IPv6アドレスを自動生成するために配信されたプレフィックス情報を使用できるかどうか。使用できる。
AdvRouterAddr off; ← プレフィックスの代わりにインターフェースアドレスを送る指示(モバイルIPv6で利用)。しない。
}; # End of prefix definition
}; # End of interface definition
^C
※テスト用のUbuntu18.04で実行。
このRAだと、IPv6アドレスとゲートウェイはRAに基づいて自動構成し、DNS等の他の情報はDHCPv6から受け取る事になっている。
これを参考にしつつ Server で DHCPv6 を参照するようなRAを返すようにする。
いますぐ実践! Linux システム管理 / Vol.194
$ sudo apt install radvd
このサービスを動かすために設定ファイルを作成。インストール時に作られないため、自分で作る。
/etc/radvd.conf
#
# myhome settings
#
interface eth0
{
AdvSendAdvert on;
AdvManagedFlag on;
AdvOtherConfigFlag on;
AdvDefaultPreference low;
prefix prefix fdxx:xxxx:xxxx:xxxx::/64
{
AdvAutonomous off;
};
};
RS(Router Solicitation/ルーター要請)とRA(Router Advertisement/ルーター広告)はICMPv6で送受信される。
ネットワークエンジニアとして / IPv6 - ICMPv6
ufwでポート開放の設定しなきゃ…と思ったけど、pingが飛んでるし、RSも受け取っている風に見えた。後からenableにしたりdisableにしたりして試したけど、動作に変わりなし。よって、ブロックはしていないと判断(これでいいのか?)。閉じている場合は、以下を参考にしながら開ける感じかな。
ubuntu forums / syslog full of UFW BLOCK PROTO=ICMPv6
ということで、サービス開始。
$ sudo systemctl start radvd ← 動いていないなら start 。動いていたら restart で。
テスト環境から配布内容を確認。
配布する情報の内容はこれで確認できる。
配布されているパケットを解析するらしく、表示されるまで時間がかかることも。
$ sudo radvdump ens33
#
# radvd configuration generated by radvdump 2.11
# based on Router Advertisement from fe80::serv:erse:rver:serv
# received by interface ens33
#
interface eth0
{
AdvSendAdvert on;
# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
AdvManagedFlag on; ← Mフラグ : アドレスを管理プロトコルで構成
AdvOtherConfigFlag on; ← Oフラグ : 他の情報を管理プロトコルで構成
AdvReachableTime 0; ← 隣接ノードに可能な時間(ms)
AdvRetransTimer 0; ← 再送されたルーター要請が到達する時間(ms)
AdvCurHopLimit 64;
AdvDefaultLifetime 1800;
AdvHomeAgentFlag off;
AdvDefaultPreference medium;
AdvSourceLLAddress on;
prefix fdxx:xxxx:xxxx:xxxx::/64
{
AdvValidLifetime 86400;
AdvPreferredLifetime 14400;
AdvOnLink on;
AdvAutonomous off; ← このプレフィックスは自動構成に利用できない
AdvRouterAddr off;
}; # End of prefix definition
}; # End of interface definition
狙い通りのRAが飛んでる。
■使ってみる
Windows、UbuntuからネットワークをON/OFFしたりなんかしてリース状況を確認しようと思ったが、isc-dhcp-serverがDNSを更新に行くタイミングがわからない。端末を再起動しても全然更新に行かない。変だなーと思ったら、renewの仕方が違った。
WIndowsでは以下。
VAIO / [Windows 10] IPアドレスを解放/再取得する方法
> ipconfig /renew ← IPv4のアドレス再取得
> ipconfig /renew6 ← IPv6のアドレス再取得
> ipconfig /all
イーサネット アダプター ローカル エリア接続:
接続固有の DNS サフィックス . . . . .: hogeserver.hogeddns.jp
説明. . . . . . . . . . . . . . . . .: Realtek PCIe GbE Family Controller
物理アドレス. . . . . . . . . . . . .: xx-xx-xx-xx-xx-xx
DHCP 有効 . . . . . . . . . . . . . .: はい
自動構成有効. . . . . . . . . . . . .: はい
IPv6 アドレス . . . . . . . . . . . .: 24xx:xxxx:xxxx:xxxx:nnnn:nnnn:nnnn:nnnn(優先)
IPv6 アドレス . . . . . . . . . . . .: fdxx:xxxx:xxxx:xxxx::2(優先)
・・・
DNS サーバー. . . . . . . . . . . . .: fdxx:xxxx:xxxx:xxxx::100
172.16.1.100
・・・
Ubuntuでは以下。
LinuxQuestions.org / commands to request and release of an IPv6 address from a dhcp server
Linux Fan / Ubuntuで「ネームサーバー」の設定を確認する方法
$ sudo dhclient -4 -r ens33 ; sudo dhclient -4 ens33
$ sudo dhclient -6 -r ens33 ; sudo dhclient -6 ens33
$ systemd-resolve --status
Global
DNSSEC NTA: 10.in-addr.arpa
・・・
Link 2 (ens33)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 172.16.1.100
fdxx:xxxx:xxxx:xxxx::100
DNS Domain: hogeserver.hogeddns.jp
※表示順序にかかわらず、先にリンクアップした方のDNSを先に参照する模様。
※いつの間にかDNS「flets-east.jp / iptvf.jp」が出なくなった。コンパイル後のインストールでなにか失敗しているのかもしれない。
リース状況を確認。
/var/lib/dhcp/dhcpd6.leases
・・・
ia-na "\xxxxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxx\xxxxx\xxx\xxx\xxx\xxx" {
cltt 0 2018/11/25 03:14:57;
iaaddr fdxx:xxxx:xxxx:xxxx::1:d00 {
binding state active;
preferred-life 54000;
max-life 86400;
ends 1 2018/11/26 03:14:57;
set ddns-fwd-name = "MainPC.hogeserver.hogeddns.jp.";
set ddns-txt = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
set ddns-rev-name = "0.0.d.0.1.0.0.0.0.0.0.0.0.0.0.0.x.x.x.x.x.x.x.x.x.x.x.x.x.x.d.f.ip6.arpa.";
}
}
ia-na "\xxx\xxx\xxxx\xxx\xxx\xxx\xxxx\xxx\xxx\xxx\xxx\xxxx\xxx\xxx\xxx" {
cltt 0 2018/11/25 03:24:02;
iaaddr fdxx:xxxx:xxxx:xxxx::1:947 {
binding state active;
preferred-life 7200;
max-life 86400;
ends 1 2018/11/26 03:24:02;
}
}
・・・
ちゃんとホスト名が書き出されているのがWindows10の方で、ホスト名が書き出されていないのがUbuntuの方。
で、DNSへの反映状況を確認。
$ sudo rndc sync
/var/cache/bind/db.hogeserver.zone
・・・
MainPC A 172.16.1.2
TXT "02b5xxxxxxxxxxxxxxxxxxxxxxxxxxxx07"
AAAA fdxx:xxxx:xxxx:xxxx::2
temp A 172.16.1.11
TXT "02e7xxxxxxxxxxxxxxxxxxxxxxxxxxxx47"
AAAA fdxx:xxxx:xxxx:xxxx::1:947
・・・
しっかりと反映してる。
ただ、テストの最中、Ubuntuの側は何度やってもDNSに反映されなかった。
時間をおいてから再起動してIPアドレスを取ってみたら反映されているという…
ただね、もう調査に疲れたよパトラッシュ。もう動いてるからカンベンしてちょ!
若干気になる部分はあるものの、完成。
■いろいろ調べたこと(1)
IPv6のルーティングテーブル確認方法。
いつか、そのとき、あの場所で。 / [Linux][IPv6] IPv6でのルーティングテーブルの確認コマンド。
Linux IPv6 HOWTO (en) / 7.1. Displaying existing IPv6 routes
$ route -n6
$ ip -6 route
■いろいろ調べたこと(2)
/etc/network/interface のファイルをいじってIPアドレスを変えたりしたとき以下のエラーが発生する。
11月 17 17:40:03 hogeserver ifup[6796]: RTNETLINK answers: File exists
11月 17 17:40:03 hogeserver ifup[6796]: Failed to bring up eth0:1.
こちらの情報で対策。
R42日記 / "RTNETLINK answers: File exists"を解消する
$ sudo ip addr flush dev eth0
で、根本原因はこれ。コメント化して解消。まぁ、いらない設定ではあった。
/etc/network/interface
auto eth0:1
iface eth0:1 inet static
address 172.16.1.100
netmask 255.255.0.0
#gateway 172.16.2.1
#dns-nameservers 127.0.0.1
■いろいろ調べたこと(3)
/etc/network/interface をいじってもうまく反映されないことがあって、(2)から継続して検索してみたところ、以下を発見した。
SERVER FAULT / “RTNETLINK answers: File exists” /etc/network/interfaces Does'nt contain 2 gateways, so what's wrong?
$ sudo ifdown eth0 && sudo ifup eth0
IPアドレスがうまく変わらないといった問題はこれで回避できた。
■いろいろ調べたこと(4)
IPv6でインターネットに向けてサービスを提供するに当たり、IPv6の固定IPアドレスを振る必要があった。だけど、手動でIPアドレスを振ってもインターネット側にpingが通らない。
$ ping6 google.co.jp
connect: Network is unreachable
で、ルーティングテーブルを調べてみた。IPv6アドレスを自動構成させると以下の通りとなる。
完全手動で設定したときには黄色の行がない。
$ ip -6 route
24xx:xxxx:xxxx:xxxx::100 dev eth0 proto kernel metric 256 pref medium
24xx:xxxx:xxxx:xxxx::/64 dev eth0 proto kernel metric 256 expires 14328sec pref medium
fc00::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
default via fe80::xxxx:xxxx:xxxx:xxxx dev eth0 proto ra metric 1024 expires 8928sec hoplimit 64 pref medium
fe80::xxxx:xxxx:xxxx:xxxx は、Router(1)に払い出されているIPv6アドレスの下64ビットが書かれている。Router(1)を再起動したら変わってしまうかもしれない番号だ(と思われる)。
ということから、IPv6アドレスは自動構成のものも作ることとした。
そもそもIPv6は1つのNICが複数のIPアドレスを持つ前提(グローバルアドレスとローカルリンクアドレスとか)だから、大した問題にはならない想定。
実際に手動設定したIPv6アドレスからpingが飛ぶのか確認した。
$ ping6 google.co.jp -I 24xx:xxxx:xxxx:xxxx::100
PING google.co.jp(aaaaaaaa.net) from 24xx:xxxx:xxxx:xxxx::100 : 56 data bytes
64 bytes from aaaaaaaa.net: icmp_seq=1 ttl=52 time=7.13 ms
…
よし、飛んでる、大丈夫!
ちなみにルートを追加する場合は以下。サーバーのmetricは256が基本になっているようだったから、ルートを追加するときにも256を指定してみた(未指定だと1000になる)。ま、これだけじゃインターネットには出られないが、将来完全にmanualな設定をする場合に備えてメモメモ。
$ sudo ip -6 route add 24xx:xxxx:xxxx:xxxx::/64 dev eth0 metric 256
■いろいろ調べたこと(5)
/etc/network/interface に以下のように固定IPを入れたところ、ifdownコマンドで怒られる。
auto eth0
・・・
iface eth0 inet6 auto
post-up ip -6 addr add 24xx:xxxx:xxxx:xxxx::100/128 dev $IFACE
pre-down ip -6 addr del 24xx:xxxx:xxxx:xxxx::100/128 dev $IFACE
post-up ip -6 addr add fc00::100/64 dev $IFACE
pre-down ip -6 addr del fc00::100/64 dev $IFACE
post-up ip -6 addr add fe80::100/64 dev $IFACE
pre-down ip -6 addr del fe80::100/64 dev $IFACE
実行結果はこれ。
$ sudo ifdown eth0 && sudo ifup eth0
RTNETLINK answers: Cannot assign requested address
RTNETLINK answers: Cannot assign requested address
RTNETLINK answers: Cannot assign requested address
ifdown時にIPv6アドレスを削除しなきゃいけないと思っていたが、削除しなくても結果は同じだったので消しちゃった。
auto eth0
・・・
iface eth0 inet6 auto
post-up ip -6 addr add 24xx:xxxx:xxxx:xxxx::100/128 dev $IFACE
#pre-down ip -6 addr del 24xx:xxxx:xxxx:xxxx::100/128 dev $IFACE
post-up ip -6 addr add fc00::100/64 dev $IFACE
#pre-down ip -6 addr del fc00::100/64 dev $IFACE
post-up ip -6 addr add fe80::100/64 dev $IFACE
#pre-down ip -6 addr del fe80::100/64 dev $IFACE
■いろいろ調べたこと(6)
テスト用にVMware PlayerでUbuntu18.04デスクトップを構築した。で、ちょっと放って置くとすぐに画面がロックされてしまう。
設定は2箇所。
設定 → プライバシー → 画面ロック でロックしないようにする。
設定 → 電源 → 省電力 → ブランクスクリーン で「しない」を選択。New!
どこに行っても1つ目は書かれているんだけど、2つ目もやっておかないと画面が暗くなってしまう。復帰時には画面を上にスライドする必要があり(エンターキーでも行けるけど)、いちいち面倒くさいので設定した。
■いろいろ調べたこと(7)
記事を書いている上で、radvdumpコマンドがどのパッケージに含まれているのかを確認したくなった。既にインストールされちゃってたりするので、インストール済みのパッケージから調べたかった。
それマグで! / あるコマンドが含まれるパッケージを探す。apt-file/dpkg
$ dpkg -S $(which radvdump)
radvd: /usr/sbin/radvdump
apt-fileをよく見かけるが、既にインストールされているパッケージを探すならこの方がいいように思った。apt-fileパッケージを入れなくて済むし。
■いろいろ調べたこと(8)
良い機会なので、ゾーンファイルを整理した。
基本的にはDHCPでIPアドレスを振り出しているのだから、固定なIPのものだけを書き出しておけば、いずれ(具体的には1日)で整理されるはずだ。
チェック方法はココで教えてくれた。
お便利サーバー.com / 設定ファイルの書式チェックコマンドについて
$ named-checkzone hogeserver.hogeddns.jp /var/cache/bind/db.hogeserver.zone
※ゾーン名とゾーンファイルを指定して実行。
そして、DDNS環境において、直接ゾーンファイルを編集するためにはBINDを止めなければならない。止めないで作業するにはコマンドを用いる(DHCPがやっていることと同じようにkeyを使って更新)。
Qoosky / BIND 9 ゾーンファイル Dynamic Update の設定方法
人力検索はてな / bindのjnlファイル(Journalファイル)をゾーンファイルに反映させて、クリア(削除)する方法を探しています。
$ nsupdate -k /etc/dhcp/ddns-keys/rndc.key
> update add temp.hogeserver.hogeddns.jp 3600 A 172.16.1.11
> ← これで更新がかかる(sendの省略形?)
> update delete temp.hogeserver.hogeddns.jp A
>
> update delete temp.hogeserver.hogeddns.jp AAAA
>
> update delete temp.hogeserver.hogeddns.jp txt
>
※keyファイルにアクセスできる権限が必要。
だが、利用者も少ない中、コマンドによる更新は手間がかかるばっかりで面倒と思った。
色々とやっている中で更新時に発生するエラーがあって、それを検索したら自分の過去記事が出てきた。
Ubuntu 14.04 ログに出ているエラーへの対処メモ
$ sudo rndc sync; sudo rndc freeze ← キャッシュをファイルに吐き出して更新を止める
この間にファイルを更新。
$ sudo rndc thaw ← 更新を再開
■いろいろ調べたこと(9)
Windows10で ipconfig /renew6 をすると、ものずごく時間がかかる。
しかし、サーバーで見ているとWindows10へのアドレスの振り出しはさっさと終わっていて、DNSにも反映されてる…。
>ipconfig /renew6
Windows IP 構成
インターフェイス VMware Network Adapter VMnet1 の更新中にエラーが発生しました: セマフォがタイムアウトしました。
インターフェイス VMware Network Adapter VMnet8 の更新中にエラーが発生しました: セマフォがタイムアウトしました。
サーバーを見たらこんなログが出ていた。
Nov 25 15:48:41 hogeserver kernel: [14539.006818] [UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=fe80:0000:0000:0000:xxxx:xxxx:xxxx:xxxx DST=ff02:0000:0000:0000:0000:0000:0001:0003 LEN=81 TC=0 HOPLIMIT=1 FLOWLBL=1017758 PROTO=UDP SPT=60594 DPT=5355 LEN=41
これは、LLMNR(Link-Local Multicast Name Resolution)という名前解決の方法らしい。
@IT / 第6回 LLMNRを使ったローカル・セグメント上での名前解決
ウチの中にはこんなIPアドレスの解決方法は用意していない。DNSがあるからいらないっしょ。VMware Player をバージョンアップしないで使い続けているからこんなことになるのかな、と調べることも諦めた。
■いろいろ調べたこと(10)
設定で試行錯誤しているとき、DHCPv6からどうしてもIPアドレスが振り出されずに困った。
いつか、そのとき、あの場所で。 / [Windows10][ #ipv6 ][ #ipv6study] やっぱりDHCPv6ステートレスモードでDNSサーバ情報が受け取れなくなったけど解決した
もう、この問題発生から1週間以上が経過…これで問題が解決したのか、設定を修正したら解決したのかが思い出せないけれど、転ばぬ先の杖としてメモ。
長かった~。UbuntuでもまだデュアルスタックでDDNSな環境を作るのにはこんなに時間がかかるのね。知識が足りないのは否定しないが、問題にぶち当たってからしか情報が得られないのはもしかしたら自宅サーバー運営開始以来はじめてのことだったかもしれない。
で、IPv6について色々と調べて思ったことは、IPv6でアクセスできるサイトはまだまだ少ないんだなーということ。ほとんどIPv6対応していないといっても過言ではない感じ。
実は当初、インターネットに向けてIPv6でサービス公開することを目指していた。しかし、いざ、テストしてみようと思ったら「IPv6でインターネットから自宅に向けてアクセスする」方法がなかったのて諦めるしかなかった。
こう書きながら思ったことは「IPv6化はなかなか進まないだろうな」ということ。苦労しても実りが少なすぎる…。その点でv6プラスサービスはIPv4でのアクセスが飛躍的に早くなる上に、意識しなくてもIPv6対応機器を持っていればIPv6アクセスもできるから、IPv6の普及を促進するんだろうなと思った。