Назад | Перейти на главную страницу

Могу ли я создать NAT 1: 1 с помощью iptables?

Я запускаю сервер Debian 10 с несколькими сетевыми интерфейсами. Могу ли я создать правила, которые будут маршрутизировать все сетевой трафик, поступающий на один IP-адрес на одном из интерфейсов извне (то есть от других устройств в сети), на другой IP-адрес не на той же машине, но где-то еще в сети? Аналогично маршрутизации WAN-LAN.

Я знаю, как это сделать, например, на pfSense, но я совершенно запутался в iptables ..

Также приветствуются решения, не относящиеся к iptables.

Быстрые примеры пересылки трафика, поступающего извне и интерфейсов на одном компьютере, с исходного адреса на другой адрес для версий IP 4 и 6 (возможно, исключая трафик ipsec с конечной точкой на исходном адресе и существующими соединениями в точке выполнения). Это также НЕ перенаправляет трафик, генерируемый локально выполняющимися программами, для этого вам нужна цепочка OUTPUT.

#Activate forwarding
#Note: These forward settings are not reboot persistent
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv4.ip_forward=1

iptables -t nat -A PREROUTING -d original.add.re.ss -j DNAT --to-destination ipv4.add.re.ss
iptables -t nat -A POSTROUTING -j MASQUERADE

ip6tables -t nat -A PREROUTING -d [original.add.re.ss] -j DNAT --to-destination [2001::]
ip6tables -t nat -A POSTROUTING -j MASQUERADE

Если вы хотите ограничить пересылку только пакетами извне, вам нужно изменить правила, либо добавьте -i interface присвоение имени интерфейсу, в который они входят, или сопоставление всего, что не было получено с локального адреса -m addrtype ! --src-type LOCAL. Вы также можете исключить широковещательный и многоадресный трафик, используя -m addrtype --dst-type UNICAST --src-type UNICAST. Вы также должны проверить, что политика по умолчанию для цепочки FORWARD - ACCEPT, или добавить определенные правила в эту цепочку.

Сброс существующих filter и nat таблицы можно сделать с iptables -S -t filter и iptables -S -t nat. В filter таблица, где вы настраиваете правила FORWARD, если есть политика DROP. -A перед PREROUTING / POSTROUTING означает Добавить. Если вам нужно вставить правило, потому что в конце есть DROP, вы должны использовать -I и поставьте число после названия сети.