summaryrefslogtreecommitdiff
path: root/nodes/gateway.yml
blob: 25df9f88509777c5d90b3c2e74305dbcb020ca76 (plain)
  1. # SOHO LAN gateway w/ masquerading firewall on LIME2 box
  2. # Targets: Debian 9 (Stretch) or newer
  3. # Depends: boxer-data (>= 10.5.14)
  4. classes:
  5.   - Console.setup
  6.   - Console.filemanager
  7.   - Admin.etc.functions
  8.   - Admin
  9.   - Admin.apt.auto
  10.   - Admin.apt.auto.upgrade
  11.   - Service.ssh
  12.   - Service.dhcp.isc.server.authoritative
  13.   - Service.dhcp.client
  14.   - Service.mail.mta.dma
  15.   - Service.scheduler.systemd
  16.   - Hardware.motherboard.olimex.lime2
  17.   - Hardware.harden
  18.   - Framework.localization.limit
  19.   - Framework.pkg.apt.autoremove-suggests
  20.   - Framework.pkg.apt.avoid-removals
  21.   - Framework.pkg.apt.aptitude.advance-on-action
  22.   - Framework.pkg.apt.aptitude.list-suite
  23.   - Framework.pkg.apt.proxy.reset
  24.   - Framework.pkg.apt.source.reset
  25. parameters:
  26.   bug:
  27.     - 483754
  28.   doc:
  29.     gateway:
  30.       pkg:
  31.         - include bandwidth-saving remote shell service MoSH
  32.         - Include traffic shaping service wondershaper
  33.       tweak:
  34.         - reset root account rcfiles from skeleton
  35.         - limit video buffers (freeing memory for general use)
  36.         - use HDMI (not serial portas initial boot console
  37.         - avoid bufferbloat
  38.         - adapt default settings for console file manager Midnight Commander
  39.         - set wireless regulatory domain to Denmark
  40.         - (re)set ethernet devices to use dhcpand routing
  41.         - (re)set first ethernet device to use dhcproutingmDNSand masquerading
  42.         - enable Domain name (DNSservice systemd-resolved
  43.         - use Cloudflare (not Googlefallback DNS resolvers
  44.         - enable multicast DNS
  45.         - enable Network Time (NTPservice systemd-timesyncd
  46.         - use static IPs as fallback with NTP to avoid DNSSEC deadlock
  47.   pkg:
  48.     - iproute2
  49.     - iw
  50.     - wpasupplicant
  51.     - modemmanager
  52.     - mosh
  53.     - iftop
  54.     - locales
  55.     - sudo
  56.     - whiptail
  57.     - debian-security-support
  58.     - procps
  59.     - wondershaper
  60.   pkg-avoid:
  61.     - xauth
  62.   tweak:
  63.     - >
  64.       files=".bash_logout .bashrc .profile";\
  65.        for file in $files; do \
  66.         cp -f "/target/etc/skel/$file" "/target/root/$file";\
  67.        done;\
  68.        echo '' >> /target/root/.profile;\
  69.        echo 'mesg n || true' >> /target/root/.profile
  70.     - >
  71.       _setappendvar /target/etc/default/flash-kernel \
  72.        LINUX_KERNEL_CMDLINE_DEFAULTS \
  73.        '"sunxi_ve_mem_reserve=0 sunxi_g2d_mem_reserve=0 sunxi_fb_mem_reserve=16"'
  74.     - >
  75.       file=/target/etc/flash-kernel/bootscript/bootscr.sunxi;\
  76.        _backup "$file";\
  77.        sed -i -r -e '2asetenv console tty0\''n' "$file"
  78.     - >
  79.       _setappendvar /target/etc/sysctl.d/local-bufferbloat.conf \
  80.        net.core.default_qdisc fq_codel
  81.     - >
  82.       file=/target/etc/mc/mc.ini;\
  83.        _backup "$file";\
  84.        echo '[Midnight-Commander]' > "$file";\
  85.        echo 'auto_save_setup=false' >> "$file";\
  86.        echo 'use_internal_view=true' >> "$file";\
  87.        echo 'use_internal_edit=true' >> "$file";\
  88.        echo 'num_history_items_recorded=200' >> "$file";\
  89.        echo 'editor_option_save_mode=false' >> "$file";\
  90.        echo 'editor_show_right_margin=false' >> "$file";\
  91.        echo 'skin=dark' >> "$file";\
  92.        echo '' >> "$file";\
  93.        echo '[Panels]' >> "$file";\
  94.        echo 'navigate_with_arrows=true' >> "$file";\
  95.        echo '' >> "$file";\
  96.        echo '[Layout]' >> "$file";\
  97.        echo 'message_visible=false' >> "$file";\
  98.        echo 'menubar_visible=false' >> "$file"
  99.     - >
  100.       _setappendvar /target/etc/default/crda \
  101.        REGDOMAIN DK
  102.     - >
  103.       _uuid(){ set -e;\
  104.         tmpfile=$(mktemp);\
  105.         (umask 077; fallocate --length 40kib "$tmpfile");\
  106.         PATH="/usr/sbin:/sbin:$PATH" mkswap "$tmpfile" | grep -Po '\bUUID=\K\S+';\
  107.         rm -f "$tmpfile"; }
  108.     - >
  109.       file=/target/etc/systemd/network/90-dhcp.network;\
  110.        _backup "$file";\
  111.        echo '[Match]' > "$file";\
  112.        echo 'Name=ethenwl*' >> "$file";\
  113.        echo '' >> "$file";\
  114.        echo '[Network]' >> "$file";\
  115.        echo 'DHCP=yes' >> "$file";\
  116.        echo 'IPForward=yes' >> "$file"
  117.     - >
  118.       file=/target/etc/systemd/network/10-eth0.network;\
  119.        _backup "$file";\
  120.        echo '[Match]' > "$file";\
  121.        echo 'Name=eth0' >> "$file";\
  122.        echo '' >> "$file";\
  123.        echo '[Network]' >> "$file";\
  124.        echo 'DHCP=yes' >> "$file";\
  125.        echo 'MulticastDNS=yes' >> "$file";\
  126.        echo 'LinkLocalAddressing=yes' >> "$file";\
  127.        echo 'IPForward=yes' >> "$file";\
  128.        echo 'IPMasquerade=yes' >> "$file"
  129.     - systemctl enable systemd-networkd
  130.     - >
  131.       dir=/target/etc/systemd/resolved.conf.d;\
  132.        mkdir -p "$dir";\
  133.         file="$dir/local.conf";\
  134.         echo '[Resolve]' > "$file";\
  135.         echo 'FallbackDNS=1.1.1.1 1.0.0.1 2606:4700:4700::1111,2606:4700:4700::1001' >> "$file";\
  136.         echo 'MulticastDNS=yes' >> "$file"
  137.     - systemctl enable systemd-resolved
  138.     - >
  139.       ln -sfT ../run/systemd/resolve/stub-resolv.conf \
  140.        /target/etc/resolv.conf
  141.     - >
  142.       dir=/target/etc/systemd/timesyncd.conf.d;\
  143.        mkdir -p "$dir";\
  144.         file="$dir/local.conf";\
  145.         echo '[Time]' > "$file";\
  146.         echo '# include static IPs (once expanded from former) to avoid DNSSEC deadlock' >> "$file";\
  147.         echo 'FallbackNTP=2.debian.pool.ntp.org 195.137.195.251 158.248.189.11 193.104.228.123 195.137.195.252 2001:ac8:37::40 2001:67c:28c8:12::123 2a00:1b70:1200:1::123 2001:67c:564::12' >> "$file"
  148.     - systemctl enable systemd-timesyncd