пересылать пакеты с помощью iptables

Я хотел бы перенаправить все входящие с 10.32.43.75:80 на 10.48.5.66:80

как я могу сделать это с помощью iptables в 10.32.43.75?

Я пробовал, но не работает:

iptables -A PREROUTING -t nat -i ens33 -p tcp --dport -j DNAT --to 10.48.5.66 :80

iptables -A FORWARD -p tcp -d 10.48.5.66 --dport 80 -j ПРИНЯТЬ

0
задан 3 November 2021 в 14:03
1 ответ

Проблема в вашей настройке заключается в том, что исходные адреса пакетов остаются прежними. Пример потока пакетов, где клиент — 192.168.100.100:

  1. Пакет клиента с источником 192.168.100.100 поступает на порт 80 10.32.43.75. Адрес источника пакета — 192.168.100.100, адрес назначения — 10.32.43.75.
  2. IPTables выполняет NAT назначения, изменяя место назначения на 10.48.5.66. Адрес источника пакета — 192.168.100.100, адрес назначения — 10.48.5.66.
  3. Пакет переадресован на 10.48.5.66. Он отправляет ответный пакет на 192.168.100.100. Адрес источника ответного пакета — 10.48.5.66, адрес назначения — 192.168.100.100.
  4. Ответный пакет достигает клиента. Однако, поскольку исходный пакет был отправлен на 10.32.43.75, исходный адрес 10.48.5.66 не соответствует ожиданиям клиента, поэтому пакет отбрасывается.

Решение состоит в том, чтобы добавить правило MASQUERADE, которое изменяет исходный IP-адрес на 10.32.43.75для пакетов, переадресованных через порт:

iptables -t nat -A POSTROUTING -d 10.48.5.66 -p tcp --dport 80 -j MASQUERADE
0
ответ дан 5 November 2021 в 07:15

Теги

Похожие вопросы