330-gluon-mesh-batman-adv-core-local-node 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/usr/bin/lua
  2. local site = require 'gluon.site_config'
  3. local sysconfig = require 'gluon.sysconfig'
  4. local sysctl = require 'gluon.sysctl'
  5. local uci = require('simple-uci').cursor()
  6. uci:delete('network', 'local_node_dev')
  7. uci:section('network', 'device', 'local_node_dev',
  8. {
  9. name = 'local-node',
  10. ifname = 'br-client',
  11. type = 'macvlan',
  12. macaddr = sysconfig.primary_mac,
  13. }
  14. )
  15. uci:delete('network', 'local_node')
  16. uci:section('network', 'interface', 'local_node',
  17. {
  18. ifname = 'local-node',
  19. proto = 'dhcpv6',
  20. reqprefix = 'no',
  21. peerdns = true,
  22. sourcefilter = false,
  23. keep_ra_dnslifetime = true,
  24. }
  25. )
  26. if site.dns and site.dns.servers then
  27. uci:set('network', 'local-node', 'peerdns','0')
  28. end
  29. uci:delete('network', 'local_node_route6')
  30. uci:section('network', 'route6', 'local_node_route6',
  31. {
  32. interface = 'local-node',
  33. target = site.prefix6,
  34. gateway = '::',
  35. }
  36. )
  37. uci:save('network')
  38. uci:delete('firewall', 'local_node')
  39. uci:section('firewall', 'zone', 'local_node',
  40. {
  41. name = 'local_node',
  42. network = {'local_node'},
  43. input = 'ACCEPT',
  44. output = 'ACCEPT',
  45. forward = 'REJECT',
  46. }
  47. )
  48. uci:section('firewall', 'rule', 'local_node_dns',
  49. {
  50. name = 'local_node_dns',
  51. src = 'local_node',
  52. dest_port = '53',
  53. target = 'REJECT',
  54. }
  55. )
  56. uci:save('firewall')
  57. uci:delete('dhcp', 'local_node')
  58. uci:section('dhcp', 'dhcp', 'local_node',
  59. {
  60. interface = 'local_node',
  61. ignore = true,
  62. }
  63. )
  64. uci:save('dhcp')
  65. sysctl.set('net.ipv6.conf.local_node.forwarding', 0)