とりあえず客先のIPアドレスで構築する時に、ちょうどいいサーバが無かったので余ってたorangepiでゲートウェイサーバを作った。
調達したスイッチがタグVLANしゃべれるやつだったので、orangepiの1ポートしかないNICに、VLANを4つ載せた
最近のarmbianはNetworkManagerによる制御にあるので、nmtuiコマンドなどでネットワーク設定を行った。
nmtuiで[Add]-[VLAN]を選んだあと、下記の様な感じでデバイスは空欄、「Parent(親)」は、実際のネットワークインターフェイスであるeth0を指定、そして、作成したいVLAN IDを「VLAN id」に入力し、作成
これでネットワーク設定を行った結果は、 /etc/NetworkManager/system-connections に出力されている。
DNSサーバ
次に、VLANを割り当てているサブネット以外の場所にあるDNSサーバをどうやってごまかすかを考えた。
応答する内容については、 /etc/hosts に書いたものを利用する dnsmasq を試用することとした。
root@orangepi2:~# diff -u /etc/dnsmasq.conf.org /etc/dnsmasq.conf
--- /etc/dnsmasq.conf.org 2022-02-28 11:54:50.037516142 +0900
+++ /etc/dnsmasq.conf 2022-02-28 16:05:58.999972348 +0900
@@ -8,6 +8,7 @@
# (53). Setting this to zero completely disables DNS function,
# leaving only DHCP and/or TFTP.
#port=5353
+port=53
# The following two options make you a better netizen, since they
# tell dnsmasq to filter out queries which the public DNS cannot
@@ -16,7 +17,7 @@
# these requests from bringing up the link unnecessarily.
# Never forward plain names (without a dot or domain part)
-#domain-needed
+domain-needed
# Never forward addresses in the non-routed address spaces.
#bogus-priv
@@ -43,7 +44,7 @@
# Change this line if you want dns to get its upstream servers from
# somewhere other that /etc/resolv.conf
-#resolv-file=
+resolv-file=/etc/resolv-tmp.conf
# By default, dnsmasq will send queries to any of the upstream
# servers it knows about and tries to favour servers to are known
@@ -72,6 +73,7 @@
# Add local-only domains here, queries in these domains are answered
# from /etc/hosts or DHCP only.
#local=/localnet/
+local=/osakana.net/
# Add domains which you want to force to an IP address here.
# The example below send any host in double-click.net to a local
@@ -142,6 +144,7 @@
# domain of all systems configured by DHCP
# 3) Provides the domain part for "expand-hosts"
#domain=thekelleys.org.uk
+domain=osakana.net,客先IPアドレス帯/24
# Set a different domain for a particular subnet
#domain=wireless.thekelleys.org.uk,192.168.2.0/24
osakana.net ドメインの名前解決を、ちゃんとしたDNSサーバに聞きに行かないよう「local=/ドメイン名/」を定義して、阻止する。
domain=の記述はいらないような感じだけど、とりあえず追加しておいたもの。
「resolv-file=/etc/resolv-tmp.conf」と入れてるのは、Network Manager生成の/etc/resolv.conf だと期待値と違ったものがあったため、あえて別ファイルとしているもので、通常は不要。
DNSサーバが他のサブネットにある件は、とりあえず、ダミーのVLANを作成し、そこにIPアドレスを割り当て、/etc/sysctl.d/98-ipforward.conf にip_forward設定を入れることで、応答を返せるようにした。
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
NTPサーバ
ntpサーバは chronyで作成した。
/etc/chrony.conf を修正するのではなく、 /etc/chrony/conf.d/server.conf に下記を記述した。
allow 172.17.44.0/24
allow 192.168.20.0/26
local stratum 10
これでchrony再起動で問題なかった。
proxyサーバ
要件には無かったが、ひとまずproxyサーバとしても動作できるようsquidをインストールした。
しかし、 armbian初期設定では /var/log が RAMディスク作成で50MBのため /var/log/squid が作成できずエラーとなった
/var/logの50MBというのは /etc/default/armbian-ramlog にて「SIZE=50M」で定義されている。
これを「SIZE=100M」などと変えて再起動すると反映される。
また、/var/log/squid をRAMディスク以外に逃がすことで対応した。
面倒なので、/ディレクトリ直下に/work/squidを作成し、そこに/var/log/squidのシンボリックリンクを作成している
root@orangepi2:/var/log/squid# ls -ld /var/log/squid
lrwxrwxrwx 1 root root 11 Feb 28 15:05 /var/log/squid -> /work/squid
root@orangepi2:/var/log/squid#