firmware/src/packages/fff/fff-layer3-snat/files/etc/layer3.d/33-snat.conf
Christian Dresel 6d1c5aaa82 Add package fff-layer3-snat
With this package it is possible to make SNAT with IPv4 on the router

The user must set a routerip setting in gateway.meta.routerip to get a single ip for peering interfaces.
At ipaddr the user must set a ip that not use in babel (e.g. 192.168.0.1/16) for the clients

With this package the ipaddr address is SNAT to the routerip and every router need only one
freifunk ip and can use the same ipaddr on every router.

It is a system like cgnat from big provider

Signed-off-by: Christian Dresel <freifunk@dresel.systems>
2021-12-30 12:56:46 +01:00

37 lines
862 B
Plaintext

configure() {
# first we delete the snat config
uci -q del network.client.fff_snat
uci -q del network.client.fff_snat_routerip
if [ "$(uci -q get gateway.@client[0].snat)" = '1' ]; then
# first check the config is plausible
routerip=$(uci -q get gateway.meta.routerip)
if ! $routerip; then
echo "ERROR: No routerip set, which is required for SNAT!"
return 1
fi
if ! uci -q get gateway.@client[0].ipaddr; then
echo "ERROR: No ipaddr set, which is required for SNAT!"
return 1
fi
# keep only the first IP
routerip=${routerip%% *}
# keep only the IP without the CIDR
routerip=${routerip%%/*}
# We set the snat config
uci set network.client.fff_snat=1
uci set network.client.fff_snat_sourceip=$routerip
fi
}
apply() {
uci commit network
}
revert() {
uci revert network
}