История изменений
Исправление nickleiten, (текущая версия) :
Банальный хак маршрутизации. На IP3 шлюз по-умолчанию оставляете в IP2, если я правильно понял, все три системы находятся в одной локальной сети. Т.к. в условии стоит не менять маршруты на IP3 и получить к нему доступ через IP1 - у вас два варианта:
1) Простой. Показать входящие на IP3 соединения, как будто они идут из локальной сети (и маршрутизацию не трогаем). Для этого На внешнем интерфейсе IP1 делаем DNAT с классическим пробросом портов и на нём же делаем SNAT на внутреннем интерфейсе с классификатором направления (айпишник/порт IP3) в сторону системы IP3. Это будет выглядеть приблизительно так:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23 -d <real-ip> -j DNAT --to-destination <IP3-ip>:23
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 23 -d <IP3-ip> -j SNAT --to-source <local-ip>
2) Более заковыристый вариант. Делаете цепочку натов c IP1 на IP2 и с него на IP3, при этом лучшим вариантом будет поднятие тоннеля или вилана или просто другой подсети с /30 маской между IP1 и IP2 (это всё, чтоб не было редиректорв в пределах одной локальной сети), ну или повыключать через proc посылку этих редиректов, но не факт, что всё заработает, как вы хотите, т.к. судя по вводной, на IP3 не полноценный линукс или вообще не линукс.
Исправление nickleiten, :
Банальный хак маршрутизации. На IP3 шлюз по-умолчанию оставляете в IP2, если я правильно понял, все три системы находятся в одной локальной сети. Т.к. в условии стоит не менять маршруты на IP3 и получить к нему доступ через IP1 - у вас два варианта:
1) Простой. Показать входящие на IP3 соединения, как будто они идут из локальной сети (и маршрутизацию не трогаем). Для этого На внешнем интерфейсе IP1 делаем DNAT с классическим пробросом портов и на нём же делаем SNAT на внутреннем интерфейсе с классификатором направления (айпишник/порт IP3) в сторону системы IP3. Это будет выглядеть приблизительно так:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23 -d <real-ip> -j DNAT --to-destination <IP3-ip>:23
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 23 -d <IP3-ip> -j SNAT --to-source <local-ip>
2) Более заковыристый вариант. Делаете цепочку натов c IP1 на IP2 и с него на IP3, при этом лучшим вариантом будет поднятие тоннеля или вилана или просто другой подсети с /30 маской между IP1 и IP2 (это всё, чтоб не было редиректорв в пределах одной локальной сети), ну или повыключать через proc посылку этих редиректов, но не факт, что всё заработает, как вы хотите, т.к. судя по вводной, на IP3 не полноценный линукс или вообще не линукс.
Исправление nickleiten, :
Банальный хак маршрутизации. На IP3 шлюз по-умолчанию оставляете в IP2, если я правильно понял, все три системы находятся в одной локальной сети. Т.к. в условии стоит не менять маршруты на IP3 и получить к нему доступ через IP1 - у вас два варианта:
1) Простой. Показать входящие на IP3 соединения, как будто они идут из локальной сети (и маршрутизацию не трогаем). Для этого На внешнем интерфейсе IP1 делаем DNAT с классическим пробросом портов и на нём же делаем SNAT на внутреннем интерфейсе с классификатором направления (айпишник/порт IP3) в сторону системы IP3. Это будет выглядеть приблизительно так:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23 -d <real-ip> -j DNAT --to-destination <IP3-ip>:23
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 21 -d <IP3-ip> -j SNAT --to-source <local-ip>
2) Более заковыристый вариант. Делаете цепочку натов c IP1 на IP2 и с него на IP3, при этом лучшим вариантом будет поднятие тоннеля или вилана или просто другой подсети с /30 маской между IP1 и IP2 (это всё, чтоб не было редиректорв в пределах одной локальной сети), ну или повыключать через proc посылку этих редиректов, но не факт, что всё заработает, как вы хотите, т.к. судя по вводной, на IP3 не полноценный линукс или вообще не линукс.
Исходная версия nickleiten, :
Банальный хак маршрутизации. IP3 шлюз по-умолчанию оставляете в IP2, если я правильно понял, все три системы находятся в одной локальной сети. Т.к. в условии стоит не менять маршруты на IP3 и получить к нему доступ через IP1 - у вас два варианта:
1) Простой. Показать входящие на IP3 соединения, как будто они идут из локальной сети (и маршрутизацию не трогаем). Для этого На внешнем интерфейсе IP1 делаем DNAT с классическим пробросом портов и на нём же делаем SNAT на внутреннем интерфейсе с классификатором направления (айпишник/порт IP3) в сторону системы IP3. Это будет выглядеть приблизительно так:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 23 -d <real-ip> -j DNAT --to-destination <IP3-ip>:23
iptables -t nat -A POSTROUTING -o eth1 -p tcp --dport 21 -d <IP3-ip> -j SNAT --to-source <local-ip>
2) Более заковыристый вариант. Делаете цепочку натов c IP1 на IP2 и с него на IP3, при этом лучшим вариантом будет поднятие тоннеля или вилана или просто другой подсети с /30 маской между IP1 и IP2 (это всё, чтоб не было редиректорв в пределах одной локальной сети), ну или повыключать через proc посылку этих редиректов, но не факт, что всё заработает, как вы хотите, т.к. судя по вводной, на IP3 не полноценный линукс или вообще не линукс.