fix ns.net service, fix vm routing with static routes
This commit is contained in:
parent
b0e77cbdea
commit
16dcb8c113
1 changed files with 10 additions and 5 deletions
|
|
@ -17,6 +17,7 @@ let
|
|||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
PrivateMounts = false;
|
||||
PrivateNetwork = true;
|
||||
ExecStart = (pkgs.writeShellScript "ns.net.vmix-start" ''
|
||||
NAMESPACE="$1.vmix"
|
||||
|
|
@ -32,7 +33,7 @@ let
|
|||
mkLanDomainName = networkName: lanName: lanCfg:
|
||||
if (lanCfg.domain != null) then lanCfg.domain else "${lanName}.${networkName}.vmix";
|
||||
|
||||
mkLan = networkName: lanName: cfg:
|
||||
mkLan = networkName: staticRoutes: lanName: cfg:
|
||||
let
|
||||
lanCfg = cfg // { name = lanName; namespace = "${networkName}"; };
|
||||
lanInterfaceName = "brx-${lanCfg.name}";
|
||||
|
|
@ -63,8 +64,10 @@ let
|
|||
lanDomainName = mkLanDomainName networkName lanName lanCfg;
|
||||
|
||||
lanDnsmasqConf = ''
|
||||
# lan ${lanName}
|
||||
dhcp-range=${lanInterfaceName},${dhcpStartAddress},${dhcpEndAddress},${netmask},12h
|
||||
domain=${lanDomainName},${lanInterfaceName}
|
||||
dhcp-option=${lanInterfaceName},option:classless-static-route,${lib.concatStringsSep "," (builtins.map (route: "${route},${lanInterfaceIPAddress}") (builtins.filter (route: route != lanCfg.ipv4.range) staticRoutes))}
|
||||
'' + (lib.optionalString (lanCfg.ipv4.dns.upstream != []) ("dhcp-option=${lanInterfaceName},option:dns-server,${(lib.concatStringsSep "," lanCfg.ipv4.dns.upstream)}\n"));
|
||||
in
|
||||
lanCfg // {
|
||||
|
|
@ -74,10 +77,11 @@ let
|
|||
domain = lanDomainName;
|
||||
};
|
||||
|
||||
mkLansService = networkName: lansCfg:
|
||||
mkLansService = networkName: wanIPv4Range: lansCfg:
|
||||
let
|
||||
dhcpLeaseFile="/tmp/vmix/lans.${networkName}.dhcp.leases";
|
||||
lansList = lib.attrValues(lib.mapAttrs (mkLan networkName) lansCfg);
|
||||
staticRoutes = [ wanIPv4Range ] ++ (builtins.map (lanCfg: lanCfg.ipv4.range) (lib.attrValues lansCfg));
|
||||
lansList = lib.attrValues(lib.mapAttrs (mkLan networkName staticRoutes) lansCfg);
|
||||
dnsmasqConf = pkgs.writeText "dnsmasq-${networkName}.conf" (''
|
||||
except-interface=lo
|
||||
dhcp-authoritative
|
||||
|
|
@ -183,9 +187,10 @@ let
|
|||
mkNetworkServices = networkName: cfg:
|
||||
let
|
||||
netCfg = cfg // { name = networkName; };
|
||||
vethIPv4RangeForWan = mkVethIPv4Range netCfg.index vmixCfg.global.net.wan.ipv4.range;
|
||||
in
|
||||
(mkLansService netCfg.name netCfg.lans)
|
||||
// (mkWanService netCfg.name (netCfg.wan // { ipv4.range = (mkVethIPv4Range netCfg.index vmixCfg.global.net.wan.ipv4.range); lanRanges = builtins.map (lan: lan.ipv4.range) (lib.attrValues netCfg.lans); }))
|
||||
(mkLansService netCfg.name vethIPv4RangeForWan netCfg.lans)
|
||||
// (mkWanService netCfg.name (netCfg.wan // { ipv4.range = vethIPv4RangeForWan; lanRanges = builtins.map (lan: lan.ipv4.range) (lib.attrValues netCfg.lans); }))
|
||||
// (lib.concatMapAttrs (mkMacvlanService netCfg.name) netCfg.bridges.macvlans);
|
||||
|
||||
networkNames = builtins.attrNames vmixCfg.networks;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue