Привет, начал изучать nftables, решил попрактиковаться, для практики создал себе подсетку со шлюзом на centos 8(с двумя сетевушками ens32(получает все по dhcp и смотрит в мою реальную сеть 192.168.57.0/24 c ip 192.168.57.36 ) и вторая сетевуха ens34 задал только ip 192.168.77.77 смотрит в сеть 192.168.77.0/24 ). Forward в /etc/sysctl.conf прописал.
Selinux вырубил, firewalld вырубил. Для практики решил разобраться в настройке NAT. Задачи следующие:
1) Чтобы все клиенты внутренней подсетки 77.0/24 транслировались через сетевуху 192.168.57.36 в сеть и 192.168.57.0/24 и имели доступ ко всем ее ресурсам в том числе и выход в интернет
2) С сетки 192.168.57.0 имели доступ только к одному ресурсу(http, https ,ssh) подсети 77.0 ( к примеру сайт с ip 192.168.77.111 )
Добавил только одно правило в nft
table ip nat {
chain PREROUTING {
type nat hook prerouting priority dstnat; policy accept;
}
chain INPUT {
type nat hook input priority 100; policy accept;
}
chain POSTROUTING {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 192.168.77.0/24 oif "ens32" snat to 192.168.57.36
}
chain OUTPUT {
type nat hook output priority -100; policy accept;
}
}
Все ресурсы 192.168.57.0 стали доступны для машинок сети 77.0/24.
Сделал проброс icmp из сети 77.111 на 192.168.57.177 пакеты идут от отправителя 192.168.57.36(мой шлюз)
Вопросы возникли следующие:
1) Почему у меня адреса транслируются без заданного правила маскарадинга. Так как до этого я понимал принцип работы так: это правило
ip saddr 192.168.77.0/24 oif "ens32" snat to 192.168.57.36
nft add rule nat postrouting masquerade
Так же хочу сказать что с netfilter и iptables раньше никогда дела не имел так что не бросайте камни, а помогите разобраться новичку. Кто не жадный можете пожалуйста поделиться своими конфигами с настройками nft для разбора, так как в офф манах все очень поверхностное без объяснений реализации, да и в целом далеко от реальных проектов.