Я запускаю сервер 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
и поставьте число после названия сети.