Saltstack Official IPTables Formula
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

136 行
4.1KB

  1. # This file is managed by SaltStack
  2. *filter
  3. {%- for chain_name, chain in chains.iteritems() %}
  4. :{{ chain_name | upper }} {{ chain.get('policy', '-') | upper }}
  5. {%- endfor %}
  6. {%- for chain_name, chain in chains.iteritems() %}
  7. {%- for rule in meta_rules + chain.rules %}
  8. {%- if rule.get('table', 'filter').lower() == 'filter' and rule.get('family', 'ipv4') == 'ipv6' %}
  9. {%- set r = {
  10. 'full': 'True',
  11. 'table': 'filter',
  12. 'chain': chain_name.upper(),
  13. 'command': 'A',
  14. 'family': 'ipv6',
  15. 'comment': rule.get('comment', '') + '__saltstack__',
  16. } %}
  17. {%- if rule.position is defined %}
  18. {%- do r.update({
  19. 'command': 'I',
  20. 'position': rule['position'],
  21. }) %}
  22. {%- endif %}
  23. {%- if rule.jump is defined %}
  24. {%- do r.update({'jump': rule.jump}) %}
  25. {%- endif %}
  26. {%- if rule.match is defined %}
  27. {%- do r.update({'match': rule.match}) %}
  28. {%- endif %}
  29. {%- if rule.connection_state is defined %}
  30. {%- do r.update({'connstate': rule.connection_state}) %}
  31. {%- endif %}
  32. {%- if rule.protocol is defined %}
  33. {%- do r.update({'proto': rule.protocol}) %}
  34. {%- endif %}
  35. {%- if rule.destination_port is defined %}
  36. {%- do r.update({'dport': rule.destination_port}) %}
  37. {%- endif %}
  38. {%- if rule.source_port is defined %}
  39. {%- do r.update({'sport': rule.source_port}) %}
  40. {%- endif %}
  41. {%- if rule.in_interface is defined %}
  42. {%- do r.update({'in-interface': rule.in_interface}) %}
  43. {%- endif %}
  44. {%- if rule.out_interface is defined %}
  45. {%- do r.update({'out-interface': rule.out_interface}) %}
  46. {%- endif %}
  47. {%- if rule.to_destination is defined %}
  48. {%- do r.update({'to-destination': rule.to_destination}) %}
  49. {%- endif %}
  50. {%- if rule.to_port is defined %}
  51. {%- do r.update({'to-port': rule.to_port}) %}
  52. {%- endif %}
  53. {%- if rule.to_source is defined %}
  54. {%- do r.update({'to-source': rule.to_source}) %}
  55. {%- endif %}
  56. {%- if rule.source_network is defined %}
  57. {%- do r.update({'source': rule.source_network}) %}
  58. {%- endif %}
  59. {%- if rule.destination_network is defined %}
  60. {%- do r.update({'destination': rule.destination_network}) %}
  61. {%- endif %}
  62. {{ salt['iptables.build_rule'](**r) | regex_replace('^.*-t filter ', '') }}
  63. {%- endif %}
  64. {%- endfor %}
  65. {%- endfor %}
  66. COMMIT
  67. *nat
  68. {%- for chain_name, chain in chains.iteritems() %}
  69. :{{ chain_name | upper }} {{ chain.get('policy', '-') | upper }}
  70. {%- endfor %}
  71. {%- for chain_name, chain in chains.iteritems() %}
  72. {%- for rule in chain.rules %}
  73. {%- if rule.get('table', 'filter').lower() == 'nat' and rule.get('family', 'ipv4') == 'ipv6' %}
  74. {%- set r = {
  75. 'full': 'True',
  76. 'table': 'nat',
  77. 'chain': chain_name.upper(),
  78. 'command': 'A',
  79. 'family': 'ipv6',
  80. 'comment': rule.get('comment', '') + '__saltstack__',
  81. } %}
  82. {%- if rule.position is defined %}
  83. {%- do r.update({
  84. 'command': 'I',
  85. 'position': rule['position'],
  86. }) %}
  87. {%- endif %}
  88. {%- if rule.jump is defined %}
  89. {%- do r.update({'jump': rule.jump}) %}
  90. {%- endif %}
  91. {%- if rule.match is defined %}
  92. {%- do r.update({'match': rule.match}) %}
  93. {%- endif %}
  94. {%- if rule.connection_state is defined %}
  95. {%- do r.update({'connstate': rule.connection_state}) %}
  96. {%- endif %}
  97. {%- if rule.protocol is defined %}
  98. {%- do r.update({'proto': rule.protocol}) %}
  99. {%- endif %}
  100. {%- if rule.destination_port is defined %}
  101. {%- do r.update({'dport': rule.destination_port}) %}
  102. {%- endif %}
  103. {%- if rule.source_port is defined %}
  104. {%- do r.update({'sport': rule.source_port}) %}
  105. {%- endif %}
  106. {%- if rule.in_interface is defined %}
  107. {%- do r.update({'in-interface': rule.in_interface}) %}
  108. {%- endif %}
  109. {%- if rule.out_interface is defined %}
  110. {%- do r.update({'out-interface': rule.out_interface}) %}
  111. {%- endif %}
  112. {%- if rule.to_destination is defined %}
  113. {%- do r.update({'to-destination': rule.to_destination}) %}
  114. {%- endif %}
  115. {%- if rule.to_port is defined %}
  116. {%- do r.update({'to-port': rule.to_port}) %}
  117. {%- endif %}
  118. {%- if rule.to_source is defined %}
  119. {%- do r.update({'to-source': rule.to_source}) %}
  120. {%- endif %}
  121. {%- if rule.source_network is defined %}
  122. {%- do r.update({'source': rule.source_network}) %}
  123. {%- endif %}
  124. {%- if rule.destination_network is defined %}
  125. {%- do r.update({'destination': rule.destination_network}) %}
  126. {%- endif %}
  127. {{ salt['iptables.build_rule'](**r) | regex_replace('^.*-t nat ', '') }}
  128. {%- endif %}
  129. {%- endfor %}
  130. {%- endfor %}
  131. COMMIT