Я выполняю Сервер Ubuntu 18-04 VM на хосте Zorin.
Я желаю перевести исходный адрес всех пакетов, уезжающих через enp0s3 к 192.168.1.120 с nftables. Это - то, что я сделал:
apt install nftables
modprobe nft_nat
modprobe nft_chain_nat_ipv4
nft add table nat
nft add chain nat post { type nat hook postrouting priority 0 \; }
nft add chain nat pre { type nat hook prerouting priority 0 \; }
nft add rule nat postrouting oif enp0s3 snat to 192.168.2.120
Я добираюсь:
Error: Could not process rule: No such file or directory
Согласно этому сообщению здесь
"Примечание: Вам, вероятно, придется создать/etc/modules-load.d/nftables.conf со всеми связанными модулями nftables, которых Вы требуете как записи для systemd сервиса для работы правильно. Можно получить список модулей с помощью этой команды: $ lsmod | grep '^nf' Иначе, Вы могли закончить со страшной Ошибкой: не Мог обработать правило: Никакая такая ошибка файла или каталога".
Вывод $ lsmod | grep '^nf':
nft_chain_nat_ipv4 16384 2
nf_conntrack_ipv4 16384 1
nf_defrag_ipv4 16384 1 nf_conntrack_ipv4
nf_nat_ipv4 16384 1 nft_chain_nat_ipv4
nft_nat 16384 0
nf_nat 32768 2 nft_nat,nf_nat_ipv4
nf_conntrack 131072 4
nft_nat,nf_conntrack_ipv4,nf_nat_ipv4,nf_nat
nf_tables_inet 16384 4
nf_tables_ipv6 16384 1 nf_tables_inet
nf_tables_ipv4 16384 2 nf_tables_inet
nf_tables 90112 5
nft_nat,nft_chain_nat_ipv4,nf_tables_ipv6,nf_tables_ipv4,nf_tables_i$
nfnetlink 16384 1 nf_tables
Я вырезал и вставил это в /etc/modules-load.d/nftables.conf
файл без успеха.
Кто-либо знает, как я могу разрешить эту ошибку?
Править:
Я изменил порядок, я добавил цепочки, я добавил "пред" цепочка сначала и вторая цепочка "сообщения". Теперь я получаю другую ошибку:
nft add rule nat postrouting oif eno1 snat to 192.168.2.120
<cmdline>:1:40-41: Error: syntax error, unexpected to
add rule nat postrouting oif eno1 snat to 192.168.2.120
^^
Эта ошибка кажется нечетной мне, когда я получил этот синтаксис для nftables страницы справочника:
Использование инструкций NAT
добавьте, что туземная таблица добавляет, что цепочечная туземная предварительная маршрутизация {вводит туземный приоритет рычага перед маршрутизацией 0;} добавляют, что цепочечная туземная постмаршрутизация {вводит туземный постприоритет маршрутизации рычага 100;}
добавьте правило туземный oif eth0 snat постмаршрутизации к 1.2.3.4
Хорошо, я понял это.
"postrouting" - это не крючок, а название цепочки. Поскольку моя цепочка была названа "пост", правильный синтаксис:
nft add rule nat post oif enp0s3 snat to 192.168.2.120
Правилом должно быть NFT, добавляет правило туземное сообщение "адрес подсети enp0s3" snat к 192.168.2.120
Пример адреса подсети enp0s3 может быть похожим на 10.4.0.1/16