firewall.patch 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. --- a/package/network/config/firewall4/Makefile
  2. +++ b/package/network/config/firewall4/Makefile
  3. @@ -25,7 +25,8 @@ define Package/firewall4
  4. +kmod-nft-core +kmod-nft-fib +kmod-nft-offload \
  5. +kmod-nft-nat \
  6. +nftables-json \
  7. - +ucode +ucode-mod-fs +ucode-mod-ubus +ucode-mod-uci
  8. + +ucode +ucode-mod-fs +ucode-mod-ubus +ucode-mod-uci \
  9. + +iptables +ip6tables +kmod-nft-fullcone +kmod-nft-socket +kmod-nft-tproxy
  10. EXTRA_DEPENDS:=ucode (>=2022.03.22)
  11. PROVIDES:=uci-firewall
  12. endef
  13. @@ -38,10 +39,14 @@ endef
  14. define Package/firewall4/conffiles
  15. /etc/config/firewall
  16. /etc/nftables.d/
  17. +/etc/firewall.user
  18. endef
  19. define Package/firewall4/install
  20. $(CP) -a $(PKG_BUILD_DIR)/root/* $(1)/
  21. + $(INSTALL_DIR) $(1)/etc/
  22. + $(INSTALL_CONF) ./files/firewall.include $(1)/etc/firewall.user
  23. + $(INSTALL_CONF) ./files/firewall.exwan $(1)/etc/firewall.exwan
  24. endef
  25. define Build/Compile
  26. --- a/package/network/config/firewall/Makefile
  27. +++ b/package/network/config/firewall/Makefile
  28. @@ -30,9 +30,10 @@ define Package/firewall
  29. SECTION:=net
  30. CATEGORY:=Base system
  31. TITLE:=OpenWrt C Firewall
  32. - DEPENDS:=+libubox +libubus +libuci +libip4tc +IPV6:libip6tc +libiptext +IPV6:libiptext6 +libxtables +kmod-ipt-core +kmod-ipt-conntrack +IPV6:kmod-nf-conntrack6 +kmod-ipt-nat
  33. + DEPENDS:=+libubox +libubus +libuci +libip4tc +IPV6:libip6tc +libiptext +IPV6:libiptext6 +libxtables +kmod-ipt-core +kmod-ipt-conntrack +IPV6:kmod-nf-conntrack6 +kmod-ipt-nat \
  34. + +iptables-mod-fullconenat +ip6tables-mod-fullconenat +iptables-legacy +ip6tables-legacy +kmod-ipt-nat6 +kmod-ipt-offload \
  35. + +ipset +iptables-mod-conntrack-extra +iptables-mod-iprange +iptables-mod-socket +iptables-mod-tproxy
  36. PROVIDES:=uci-firewall
  37. - CONFLICTS:=firewall4
  38. endef
  39. define Package/firewall/description
  40. define Package/package/network/config/firewall/description
  41. @@ -59,6 +59,7 @@ define Package/package/network/config/firewall/install
  42. $(INSTALL_CONF) ./files/firewall.config $(1)/etc/config/firewall
  43. $(INSTALL_DIR) $(1)/etc/
  44. $(INSTALL_CONF) ./files/firewall.user $(1)/etc/firewall.user
  45. + $(INSTALL_CONF) ./files/firewall.exwan $(1)/etc/firewall.exwan
  46. $(INSTALL_DIR) $(1)/usr/share/fw3
  47. $(INSTALL_CONF) $(PKG_BUILD_DIR)/helpers.conf $(1)/usr/share/fw3
  48. endef
  49. --- a/package/feeds/luci/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js
  50. +++ b/package/feeds/luci/luci-app-firewall/htdocs/luci-static/resources/view/firewall/zones.js
  51. @@ -58,6 +58,50 @@ return view.extend({
  52. o = s.option(form.Flag, 'drop_invalid', _('Drop invalid packets'));
  53. + if (L.hasSystemFeature('fullcone')) {
  54. + o = s.option(form.Flag, 'fullcone', _('Enable FullCone NAT'));
  55. + if (fw4)
  56. + o = s.option(form.Flag, 'fullcone6', _('Enable FullCone NAT6'));
  57. + o.depends('fullcone', '1');
  58. + }
  59. +
  60. + o = s.option(form.Flag, 'expose_wan', _('Expose WAN'), _('Danger! Proceed at your own risk.'));
  61. +
  62. + o = s.option(form.Value, 'export', _('Ports to Expose'), _('Multiple ports can be, separated by spaces, format: 80 81 82'));
  63. + o.depends('expose_wan', '1');
  64. + o.validate = function(section_id, value) {
  65. + if (value.match(/^(\d+\s*)+$/)) {
  66. + return true;
  67. + }
  68. + return _('Please enter valid format.');
  69. + };
  70. +
  71. + o = s.option(form.ListValue, 'family', _('Restrict to address family'));
  72. + o.modalonly = true;
  73. + o.rmempty = true;
  74. + o.depends('expose_wan', '1');
  75. + o.value('', _('IPv4 and IPv6'));
  76. + o.value('ipv4', _('IPv4 only'));
  77. + o.value('ipv6', _('IPv6 only'));
  78. +
  79. + o = s.option(form.ListValue, 'proto', _('Protocol'));
  80. + o.modalonly = true;
  81. + o.rmempty = true;
  82. + o.default = 'tcp';
  83. + o.depends('expose_wan', '1');
  84. + o.value('tcp', _('TCP'));
  85. + o.value('udp', _('UDP'));
  86. + o.value('tudp', _('TCP+UDP'));
  87. +
  88. + o = s.option(form.Flag, 'ex_ssh', _('Expose SSH'));
  89. + o.depends('expose_wan', '1');
  90. + o = s.option(form.Flag, 'ex_backend', _('Expose Backend'));
  91. + o.depends('expose_wan', '1');
  92. + o = s.option(form.Value, 'backend_port', _('Backend Port'), _('国内请使用除80,443外的端口'));
  93. + o.depends('ex_backend', '1');
  94. + o.rmempty = false;
  95. + o.datatype = 'integer';
  96. +
  97. var p = [
  98. s.option(form.ListValue, 'input', _('Input')),
  99. s.option(form.ListValue, 'output', _('Output')),
  100. --- a/package/network/config/firewall/files/firewall.init
  101. +++ b/package/network/config/firewall/files/firewall.init
  102. @@ -38,10 +38,12 @@ service_triggers() {
  103. }
  104. restart() {
  105. + test -f /etc/firewall.exwan && sh /etc/firewall.exwan
  106. fw3 restart
  107. }
  108. start_service() {
  109. + test -f /etc/firewall.exwan && sh /etc/firewall.exwan
  110. fw3 ${QUIET} start
  111. }
  112. @@ -50,6 +52,7 @@ stop_service() {
  113. }
  114. reload_service() {
  115. + test -f /etc/firewall.exwan && sh /etc/firewall.exwan
  116. fw3 reload
  117. }