IPTables перенаправляет трафик, не скрывая исходный IP
Я пытаюсь настроить облачный сервер в качестве шлюза, который перенаправляет весь трафик на мой второй облачный сервер. Проблема в том, что целевой сервер (2-е облако) видит только IP-адрес первого облачного сервера.
Можно ли сохранить IP-адрес источника, чтобы он отображал IP-адрес того, который подключен к первому облачному серверу. Я попытался удалить MASQUERADE, но связь между облаком #1 -> облаком #2 больше не работала должным образом.
-A ВПЕРЕД -p tcp -m tcp --dport 25565 -j ПРИНЯТЬ
-A ВПЕРЕД -m состояние - СОСТОЯНИЕ, СОЗДАНО -j ПРИНЯТЬ
-A PREROUTING -p tcp -m tcp --dport 25565 -j DNAT - к месту назначения НАЗНАЧЕНИЕ: ПОРТ
-A POSTROUTING -j MASQUERADE
Он работает с этой настройкой, но не показывает исходный IP. У вас есть идея, как не скрывать IP, который подключается к первому облачному серверу?
Спасибо
1 ответ
Облако 1 и 2 должны быть в одной сети, VPN подойдет
в облаке1:
-A FORWARD -p tcp -m tcp --dport 25565 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A PREROUTING -p tcp -m tcp --dport 25565 -j DNAT --to-destination DESTINATIONIP:PORT
-A POSTROUTING -j MASQUERADE
в cloud2 мы отмечаем желаемый пакет цифрой 1, eth0 - шлюз по умолчанию:
iptables -t mangle -A OUTPUT -o eth0 -p tcp --sport 25565 -j MARK --set-mark 1
вам нужно манипулировать таблицей маршрутизации на cloud2: отредактируйте /etc/iproute2/rt_tables, добавьте строку
1 http
вот манипуляция, tun0 - это интерфейс vpn на cloud2:
ip route add default via ip_vpn_cloud1 dev tun0 table http
ip rule add from all fwmark 1 table http
убедитесь, что net.ipv4.conf.all.rp_filter и net.ipv4.conf.default.rp_filter установлены в 1 в /etc/sysctl.conf
С -A POSTROUTING -j MASQUERADE все исходящие перенаправленные пакеты будут иметь исходный IP-адрес соответствующего исходящего интерфейса.
Вы должны быть более точными в отношении пакетов, которые вы маскируете /SNAT.