Будте добры посоветуйте как решить проблему..есть такая связка компов.
хост1(service) <-прямой eth провод-> хост2(iptables) <-internet-> хост3(client)хост1:
if1(int): 11.11.11.10
if2(inet): 22.22.22.20
default router: 22.22.22.21хост2:
if1(int): 11.11.11.11
if2(inet): 33.33.33.30
default router: 33.33.33.31хост3:
if1(inet): 44.44.44.40 (dynamic_ip)
default router: 44.44.44.41теперь попробую об'яснить в чем подкавырка.
надо попасть на сервис находящийся на хост3 на определенном порту (1234) С хост1 через обращение на порт (1234) на хост2.
т.е. в iptables на хост2 добавляется
-t nat -A PREROUTING -d 33.33.33.30 --dport 1234 -j DNAT --to-destination 11.11.11.10:1234
и все бы было хорошо но маршрут по умолчанию на хост1 указан 22.22.22.21 и соответственно получается что хост3 посылет пакет на один адрес(хост2) а получает ответ с другого адреса (хост3), конечно если я правильно представляю как работает iptables.
>Будте добры посоветуйте как решить проблему..
>
>есть такая связка компов.
>хост1(service) <-прямой eth провод-> хост2(iptables) <-internet-> хост3(client)
>
>хост1:
>if1(int): 11.11.11.10
>if2(inet): 22.22.22.20
>default router: 22.22.22.21
>
>хост2:
>if1(int): 11.11.11.11
>if2(inet): 33.33.33.30
>default router: 33.33.33.31
>
>хост3:
>if1(inet): 44.44.44.40 (dynamic_ip)
>default router: 44.44.44.41
>
>теперь попробую об'яснить в чем подкавырка.
>надо попасть на сервис находящийся на хост3 на определенном порту (1234) С
>хост1 через обращение на порт (1234) на хост2.ПОПРАВКА: хост1 и хост3 ПЕРЕПУТАЛ, правильно будет.
надо попасть на сервис находящийся на хост1 на определенном порту (1234) С
хост3 через обращение на порт (1234) на хост2.
дальше все верно..>т.е. в iptables на хост2 добавляется
>-t nat -A PREROUTING -d 33.33.33.30 --dport 1234 -j DNAT --to-destination 11.11.11.10:1234
>
>и все бы было хорошо но маршрут по умолчанию на хост1 указан
>22.22.22.21 и соответственно получается что хост3 посылет пакет на один адрес(хост2)
>а получает ответ с другого адреса (хост3), конечно если я правильно
>представляю как работает iptables.чорт перепутал хост1 и хост2
Важное дополнение: возможности как-то перенастроить хост1 нет - он чужой, для нас открыт только порт 1234.
>Будте добры посоветуйте как решить проблему..
>
>есть такая связка компов.
>хост1(service) <-прямой eth провод-> хост2(iptables) <-internet-> хост3(client)
>
>хост1:
>if1(int): 11.11.11.10
>if2(inet): 22.22.22.20
>default router: 22.22.22.21
>
>хост2:
>if1(int): 11.11.11.11
>if2(inet): 33.33.33.30
>default router: 33.33.33.31
>
>хост3:
>if1(inet): 44.44.44.40 (dynamic_ip)
>default router: 44.44.44.41
>
>теперь попробую об'яснить в чем подкавырка.
>надо попасть на сервис находящийся на хост3 на определенном порту (1234) С
>хост1 через обращение на порт (1234) на хост2.ПОПРАВКА: хост1 и хост3 ПЕРЕПУТАЛ, правильно будет.
надо попасть на сервис находящийся на хост1 на определенном порту (1234) С
хост3 через обращение на порт (1234) на хост2.
дальше все верно..>т.е. в iptables на хост2 добавляется
>-t nat -A PREROUTING -d 33.33.33.30 --dport 1234 -j DNAT --to-destination 11.11.11.10:1234
>
>и все бы было хорошо но маршрут по умолчанию на хост1 указан
>22.22.22.21 и соответственно получается что хост3 посылет пакет на один адрес(хост2)
>а получает ответ с другого адреса (хост3), конечно если я правильно
>представляю как работает iptables.
Важное дополнение: возможности как-то перенастроить хост1 нет - он чужой, для нас открыт только порт 1234.
На хост2 сделать еще и SNAT
>На хост2 сделать еще и SNAT
Верно ли я понимаю что в этом случае ответный пакет для хост3 от хост1 дойдет до хост2 и там и останеться ибо dst будет равно 11.11.11.11?
>>На хост2 сделать еще и SNAT
>Верно ли я понимаю что в этом случае ответный пакет для хост3
>от хост1 дойдет до хост2 и там и останеться ибо dst
>будет равно 11.11.11.11?хост1 ответит на хост2, а хост2 должен по таблице nat определить, что пакет на хост1 шел с хост3 и соответственно ответ перешлет на хост3, согласно своей таблици маршрутизации
>>>На хост2 сделать еще и SNAT
>>Верно ли я понимаю что в этом случае ответный пакет для хост3
>>от хост1 дойдет до хост2 и там и останеться ибо dst
>>будет равно 11.11.11.11?
>
>хост1 ответит на хост2, а хост2 должен по таблице nat определить, что
>пакет на хост1 шел с хост3 и соответственно ответ перешлет на
>хост3, согласно своей таблици маршрутизацииСпасибо работает! ++