- name: Iptables flush ansible.builtin.iptables: table: "{{ item.table }}" chain: "{{ item.chain }}" flush: yes loop: - { table: filter, chain: INPUT } - { table: filter, chain: FORWARD } - { table: filter, chain: OUTPUT } - { table: nat, chain: PREROUTING } - { table: nat, chain: POSTROUTING } - { table: nat, chain: INPUT } - { table: nat, chain: OUTPUT } - { table: mangle, chain: PREROUTING } - { table: mangle, chain: FORWARD } - { table: mangle, chain: OUTPUT } tags: - flush # - name: Set default policies # iptables: # chain: "{{ item.chain }}" # policy: ACCEPT # loop: # - { chain: INPUT } # - { chain: OUTPUT } # - { chain: FORWARD } # tags: # - flush # - name: Allow outgoing connections on LAN all # iptables: # chain: OUTPUT # out_interface: "{{ item }}" # jump: ACCEPT # loop: "{{ without_lte.stdout_lines }}" # - name: Allow outgoing connections on LAN all # iptables: # chain: OUTPUT # out_interface: br0 # jump: ACCEPT # - name: Allow loopback traffic # iptables: # chain: INPUT # protocol: all # jump: ACCEPT # in_interface: lo # - name: Allow loopback traffic for OUTPUT # iptables: # chain: OUTPUT # protocol: all # jump: ACCEPT # out_interface: lo # - name: Allow ICMP echo-reply # ansible.builtin.iptables: # chain: INPUT # protocol: icmp # icmp_type: echo-reply # Разрешаем ответы на ping # jump: ACCEPT # comment: Allow ICMP echo-reply # state: present # - name: Allow specific ICMP types # ansible.builtin.iptables: # chain: INPUT # protocol: icmp # jump: ACCEPT # icmp_type: "{{ item }}" # comment: "Allow ICMP {{ item }}" # loop: # - destination-unreachable # - time-exceeded # - name: Allow ICMP echo-request # ansible.builtin.iptables: # chain: INPUT # protocol: icmp # icmp_type: echo-request # Разрешаем запросы ping # jump: ACCEPT # comment: Allow ICMP echo-request # state: present # - name: Allow established and related connections # iptables: # chain: "{{ item }}" # protocol: all # jump: ACCEPT # ctstate: # - ESTABLISHED # - RELATED # action: insert # rule_num: 1 # loop: # - INPUT # - OUTPUT # - FORWARD # - name: Drop invalid packets on INPUT # iptables: # chain: INPUT # jump: DROP # match: state # ctstate: INVALID # state: present # action: insert # rule_num: 1 # - name: Drop invalid packets on FORWARD # iptables: # chain: FORWARD # jump: DROP # match: state # ctstate: INVALID # state: present # action: insert # rule_num: 1 # - name: Drop non-SYN packets for new TCP connections in INPUT chain # iptables: # chain: INPUT # protocol: tcp # jump: DROP # match: conntrack # ctstate: NEW # syn: negate # Это эквивалентно '! --syn' # - name: Drop non-SYN packets for new TCP connections in OUTPUT chain # iptables: # chain: OUTPUT # protocol: tcp # jump: DROP # match: conntrack # ctstate: NEW # syn: negate # Это эквивалентно '! --syn' # - name: Allow TCP MSS clamping # command: iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu - name: Allow traffic from br0 to {{ lte_int.stdout }} iptables: chain: FORWARD # in_interface: br0 out_interface: "{{ lte_int.stdout }}" jump: ACCEPT action: insert rule_num: 3 - name: Enable masquerading for {{ lte_int.stdout }} iptables: chain: POSTROUTING jump: MASQUERADE table: nat out_interface: "{{ lte_int.stdout }}" - name: Save iptables rules command: iptables-save -f /etc/iptables/iptables.rules