feat(ap-v01): Use static address for admin vlan
This commit is contained in:
parent
9a4f9c2ca3
commit
d0ac1b673e
3 changed files with 22 additions and 28 deletions
|
@ -2,20 +2,24 @@
|
|||
#
|
||||
# SPDX-License-Identifier: EUPL-1.2
|
||||
|
||||
{ config, ... }:
|
||||
{ config, nodeMeta, ... }:
|
||||
let
|
||||
svc = config.system.service;
|
||||
inherit (nodeMeta.extraNodeSettings) building floor ap-no;
|
||||
# FIXME switch to ipv6 tu be able to scale
|
||||
adminIp = "10.0.253.${builtins.toString (ap-no + floor * 8 + building * 32 + 2)}";
|
||||
in
|
||||
{
|
||||
services.admin-dhcpv4 = svc.network.dhcp.client.build {
|
||||
services.admin-ip = svc.network.address.build {
|
||||
interface = config.services.admin-vlan;
|
||||
address = adminIp;
|
||||
prefixLength = 24;
|
||||
family = "inet";
|
||||
};
|
||||
|
||||
services.admin-defaultroute4 = svc.network.route.build {
|
||||
via = "$(output ${config.services.admin-dhcpv4} router)";
|
||||
via = "10.0.253.1";
|
||||
target = "default";
|
||||
dependencies = [ config.services.admin-dhcpv4 ];
|
||||
dependencies = [ config.services.admin-ip ];
|
||||
};
|
||||
|
||||
# TODO: ensure SLAAC for admin-vlan.
|
||||
}
|
||||
|
|
|
@ -2,34 +2,24 @@
|
|||
#
|
||||
# SPDX-License-Identifier: EUPL-1.2
|
||||
|
||||
{ config, pkgs, ... }:
|
||||
{ pkgs, lib, ... }:
|
||||
let
|
||||
inherit (pkgs.liminix.services) oneshot;
|
||||
inherit (pkgs.pseudofile) dir symlink;
|
||||
inherit (pkgs) serviceFns;
|
||||
# TODO: imho, DNS should be static and provided by the router?
|
||||
dns = [
|
||||
"8.8.8.8"
|
||||
"8.8.4.4"
|
||||
"1.0.0.1"
|
||||
];
|
||||
resolvconf = pkgs.writeText "resolv.conf" (
|
||||
lib.concatMapStringsSep "\n" (dns: ''echo "nameserver ${dns}" >> resolv.conf'') dns
|
||||
);
|
||||
in
|
||||
{
|
||||
# TODO: support dynamic reconfiguration once we are in the target VLAN?
|
||||
services.resolvconf = oneshot rec {
|
||||
name = "resolvconf";
|
||||
# TODO: imho, DNS should be static and provided by the router?
|
||||
up = ''
|
||||
. ${serviceFns}
|
||||
( in_outputs ${name}
|
||||
for i in $(output ${config.services.admin-dhcpv4} dns); do
|
||||
echo "nameserver $i" >> resolv.conf
|
||||
done
|
||||
)
|
||||
'';
|
||||
|
||||
dependencies = [
|
||||
config.services.admin-dhcpv4
|
||||
];
|
||||
};
|
||||
|
||||
filesystem = dir {
|
||||
etc = dir {
|
||||
"resolv.conf" = symlink "${config.services.resolvconf}/.outputs/resolv.conf";
|
||||
"resolv.conf" = symlink "${resolvconf}";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -41,7 +41,7 @@ in
|
|||
inherit (parentConfig.services)
|
||||
sshd
|
||||
admin-vlan
|
||||
admin-dhcpv4
|
||||
admin-ip
|
||||
admin-defaultroute4
|
||||
;
|
||||
defaultroute4 = svc.network.route.build {
|
||||
|
|
Loading…
Add table
Reference in a new issue