LINUX.ORG.RU

История изменений

Исправление 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>
С форвардами думаю, сами разберётесь. И интерфейсы соответствующие подставите (в первом правиле должен быть интернет-интерфейс, во втором правиле - интерфейс локальной сети по которой идёт связь с IP3 и IP2). Единственный минус данной схемы - на вашем IP3 не будет видно с какого айпишника прошло подключение, он будет видеть внутренний адрес машины IP1 и считать, что это она к нему подключается.

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>
С форвардами думаю, сами разберётесь. И интерфейсы соответствующие подкставите (в первом правиле должен быть интернет-интерфейс, во втором правиле - интерфейс локальной сети по которой идёт связь с IP3 и IP2). Единственный минус данной схемы - на вашем IP3 не будет видно с какого айпишника прошло подключение, он будет видеть внутренний адрес машины IP1 и считать, что это она к нему подключается.

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>
С форвардами думаю, сами разберётесь. Единственный минус данной схемы - на вашем IP3 не будет видно с какого айпишника прошло подключение, он будет видеть внутренний адрес машины IP1 и считать, что это она к нему подключается.

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>
С форвардами думаю, сами разберётесь. Единственный минус данной схемы - на вашем IP3 не будет видно с какого айпишника прошло подключение, он будет видеть внутренний адрес машины IP1 и считать, что это она к нему подключается.

2) Более заковыристый вариант. Делаете цепочку натов c IP1 на IP2 и с него на IP3, при этом лучшим вариантом будет поднятие тоннеля или вилана или просто другой подсети с /30 маской между IP1 и IP2 (это всё, чтоб не было редиректорв в пределах одной локальной сети), ну или повыключать через proc посылку этих редиректов, но не факт, что всё заработает, как вы хотите, т.к. судя по вводной, на IP3 не полноценный линукс или вообще не линукс.