Сопоставление портов Iptables с двух ПК на один

Сопоставление портов Iptables с двух ПК на один

У нас есть 3 ПК, два из них подключены к интернету (оба имеют 2 сетевые карты).

ПК1:

eth0 - 1.0.0.1 (external IP)
eth1 - 172.16.0.1 (internal IP)

ПК2:

eth0 - 1.0.0.2 (external IP)
eth1 - 172.16.0.2 (internal IP)

ПК3:

eth0 - 172.16.0.3 (internal IP)

Теперь мы хотим перенаправить порт 80 с ПК1 и ПК2 на ПК3.

Но есть проблема: переадресация портов iptables работает хорошо с ПК1 или ПК2, но только в том случае, если ПК3 имеет ПК1 или ПК2 в качестве шлюза.

Правила IPtables (для ПК1):

iptables -t nat -A PREROUTING  -p tcp -d 1.0.0.1 --dport 80 -j DNAT --to-destination 172.16.0.3:80
iptables -A FORWARD -p tcp -d 172.16.0.3 --dport 80 -j ACCEPT

Итак, вопрос: можно ли настроить сопоставление портов как с ПК1, так и с ПК2 независимо от настроек шлюза на ПК3?

Заранее спасибо.

решение1

Вы только переписали пункт назначения.

Вам нужно изменить адрес источника на PC1 или PC2, чтобы ответные пакеты также могли быть преобразованы NAT. И вам нужно изменить адрес назначения, чтобы пакет отправлялся на PC3. Перезапись как источника, так и назначения называется "двойной NAT".

Вам нужно сделать DNAT в цепочке PREROUTING и SNAT в цепочке POSTROUTING. Вот так (для PC1):

iptables -t nat -A PREROUTING -p tcp -m tcp -d 1.0.0.1 --dport 80 -j DNAT \
  --to-destination 172.16.0.3:80
iptables -t nat -A POSTROUTING -p tcp -m tcp -d 172.16.0.3 --dport 80 \
   -j SNAT --to-source 172.16.0.1

решение2

Присвойте ПК3 другой IP-адрес и используйте правила DNAT на ПК1 и ПК2 для разных IP-адресов ПК3.

На ПК3 используйте «правило IP» для маршрутизации по IP-адресу источника, как показано ниже:http://lartc.org/howto/lartc.rpdb.multiple-links.html

Связанный контент