Есть сервер slackware 11
eth0 - внутренняя локальная сеть 192.168.0.0
eth1 - выход в другую подсеть 192.168.172.0 с нее на cisco, с cisco в другую сеть, где есть такой же диапазон адресов как и у нас 192.168.0.0используется iptables
Вопрос:
Если при обращении в нашей внутренней сети к ip-адресу 192.168.0.3 сервер перенаправлял бы на интерфейс eth1 и все уходило бы через cisco в другую подсеть где и находиться сервер с ip-адресом 192.168.0.3. Как можно организовать это с помощью iptables. (В нашей сети ip-адрес 192.168.0.3 не используется)
>eth0 - внутренняя локальная сеть 192.168.0.0
>eth1 - выход в другую подсеть[...]
>в другую сеть, где есть такой же диапазон адресов как и у нас 192.168.0.0
>используется iptables
>Вопрос:
>Если при обращении в нашей внутренней сети к ip-адресу 192.168.0.3 сервер перенаправлял
>бы на интерфейс eth1 и все уходило бы через cisco в
>другую подсеть где и находиться сервер с ip-адресом 192.168.0.3. Как можно
>организовать это с помощью iptables. (В нашей сети ip-адрес 192.168.0.3 не
>используется):) Поменять адреса всех машин "тут".
Или поменять адреса всех машин "там".
Или продолжить извращения. Например, поставить на _роутере_ в своей сети "этот" адрес и "NAT-ить" его нещадно(?дважды вложенный "маскарадинг" - плюрализм в одном роутере...)... С _одним_ адресом может "прокатить", а может и не...
>[оверквотинг удален]
>>бы на интерфейс eth1 и все уходило бы через cisco в
>>другую подсеть где и находиться сервер с ip-адресом 192.168.0.3. Как можно
>>организовать это с помощью iptables. (В нашей сети ip-адрес 192.168.0.3 не
>>используется)
>
>:) Поменять адреса всех машин "тут".
>Или поменять адреса всех машин "там".
>Или продолжить извращения. Например, поставить на _роутере_ в своей сети "этот" адрес
>и "NAT-ить" его нещадно(?дважды вложенный "маскарадинг" - плюрализм в одном роутере...)...
>С _одним_ адресом может "прокатить", а может и не...вообще не прокатит... они хотят с сети 192.168.0 "перехватывать" адрес 192.168.0.3 (т.е. его что, на сервак цеплять? или интерфейс сервера переводить в промиск моду?) и дальше отправлять куда-то
Вообщем iptables невыручит
можно придумать туннели
#>>eth1 - выход в другую подсеть 192.168.172.0 с нее на cisco, с cisco в другую сеть, где есть такой же диапазон адресов как и у нас 192.168.0.0>>Или продолжить извращения.
Продолжим!? Ж-)
>> Например, поставить на _роутере_ в своей сети "этот" адрес
>>и "NAT-ить" его нещадно(?дважды вложенный "маскарадинг" - плюрализм в одном роутере...)...
>>С _одним_ адресом может "прокатить", а может и не...
>
>вообще не прокатит... они хотят с сети 192.168.0 "перехватывать" адрес 192.168.0.3 (т.е._Свой_ адрес в своей сети поставить _равным_ адресу "того парня" и...
всё (ну, или не все...) входящие жестоко Ж)) натить-маскарадить.Примерно так: 1) выбираем совсем новый, не рутившийся ранее адрес, например 10.1.1.1
2) добавляем (только локальный) роутинг на 10.1.1.1 --> на "внешнюю" циску~~
3) на ifcinfig eth0 ставим ip 192.160.0.3 (клиенты, роутинг -- поправить)
сооружаем "матрёшку" вроде--(без дополнительных телодвижений, сам хост роутера может стать недоступен...
все порты-протоколы "уходят" мимо)-t nat -A PREROUTING -i eth0 -d 192.160.0.3 -j DNAT --to-destination 10.1.1.1
-t nat -A POSTROUTING -i eth1 -d 10.1.1.1 -j SNAT --to-source 192.168.172.наш
-t mangle -A PREROUTING -i eth1 -s 192.160.0.3 -j SNAT --to-source 10.1.1.1
-t mangle -A POSTROUTING -i eth0 -s 10.1.1.1 -j SNAT --to-source 192.168.0.3...и не сростается, скорее всего ?-)) Полный бред, короче. :( Sorry.
>его что, на сервак цеплять? или интерфейс сервера переводить в промиск
>моду?) и дальше отправлять куда-тоА никто не обещал, что будет легко. :-D
Ладно, в одном ящике не срослось, а в двух? Скажем роутер-роутером, но добавить ещё "полуроутер"/второй нат-тер в 192.160.173. скажем.... На роутере входящие DNAT-ить в вооброжаемую сетку (10.1.1.~ скажем), роутинг к ней -- на нат-тер#2, в нём 10.1.1.1 DNANить в 162.168.0.3/внешний и тд.
##роутер, eth0/eth1 ^^выше
route add -host 10.1.1.1 gw 192.168.172.999
+никакого роутинга на "внешнюю" 192.168.0.
-t nat -A PREROUTING -i eth0 -d 192.160.0.3 -j DNAT --to-destination 10.1.1.1
-t nat -A POSTROUTING -i eth1 -d 10.1.1.1 -j SNAT --to-source 192.168.172.наш
##нат-тер2, eth0=192.168.172.999
route add -host 10.1.1.1 gw 192.168.172.999
+никакого роутинга на "внутреннюю" 192.168.0, и правильный на внешнюю
-t nat -A PREROUTING -i eth0 -d 10.1.1.1 -j DNAT --to-destination 192.160.0.3
-t nat -A POSTROUTING -i eth1 -s 192.168.172.наш -j SNAT --to-source 192.168.172.999
##^^ вот тут надо бы как-то редиректы "давить".... или опять не срастается??Уф, %) сдаюсь... лениво дальше грабли сооружать. Хотя, да, забавно чувствовать себя идиотом.
>#>>eth1 - выход в другую подсеть 192.168.172.0 с нее на cisco, с cisco в другую сеть, где есть такой же диапазон адресов как и у нас 192.168.0.0
>
>>>Или продолжить извращения.
>Продолжим!? Ж-)Два раза!!
>>вообще не прокатит... они хотят с сети 192.168.0 "перехватывать" адрес 192.168.0.3 (т.е.
Не прокатит, совсем. Но искусство требует! ;-)
>Примерно так: 1) выбираем совсем новый, не рутившийся ранее адрес, например 10.1.1.1
[...]
>...и не сростается, скорее всего ?-)) Полный бред, короче. :( Sorry.[...]
>А никто не обещал, что будет легко. :-D
>
>Ладно, в одном ящике не срослось, а в двух? Скажем роутер-роутером, но
>добавить ещё "полуроутер"/второй нат-тер в 192.160.173. скажем....Очепя, ^^^192.160.173. читать как 192.160.172.
> На роутере входящие DNAT-ить
>в вооброжаемую сетку (10.1.1.~ скажем), роутинг к ней -- на нат-тер#2,
>в нём 10.1.1.1 DNANить в 162.168.0.3/внешний и тд.
>
>##роутер, eth0/eth1 ^^выше
>route add -host 10.1.1.1 gw 192.168.172.999[...]
>##нат-тер2, eth0=192.168.172.999
>route add -host 10.1.1.1 gw 192.168.172.999Э-э-э... мммм... очепя, cut-n-paste slip off. И опять не срослось. %)
>+никакого роутинга на "внутреннюю" 192.168.0, и правильный на внешнюю[...]
> ##^^ вот тут надо бы как-то редиректы "давить".... или опять не
>срастается??Опять.
>Уф, %) сдаюсь... лениво дальше грабли сооружать.
Граблестроительный Техникум Имени... (меня?...) представляет!
А с двумя "левыми" сетками?
##роутер, eth0/eth1 ^^выше
route add -host 10.1.1.1 gw 192.168.172.999
+никакого роутинга на "внешнюю" 192.168.0., внутренняя = на собственном eth0
-A PREROUTING -i eth0 -d 192.160.0.3 -j DNAT --to-destination 10.1.1.1
-A POSTROUTING -i eth1 -d 10.1.1.1 -j SNAT --to-source 10.2.2.2##нат-тер2, eth0=192.168.172.999
route add -host 10.2.2.2 gw 192.168.172.наш
+никакого роутинга на "внутреннюю" 192.168.0, и правильный на внешнюю
-A PREROUTING -i eth0 -s 10.2.2.2 -d 10.1.1.1 -j DNAT --to-destination 192.160.0.3
-A POSTROUTING -i eth0 -s 10.2.2.2 -d 192.160.0.3 -j SNAT --to-source 192.168.172.999
>Граблестроительный Техникум Имени... (меня?...) представляет!С _гордостью_ представляет $SUBJ.
>А с двумя "левыми" сетками?
>##роутер, eth0/eth1 ^^выше[...]
>##нат-тер2, eth0=192.168.172.999Задание на 5 с плюсом, для самостоятельного изучения: то же самое, но нат-тер#2 засунуть в Xen(UML,lguest,kvm,qemu,... по вкусу) на роутере?
>Вообщем iptables невыручитВ общем, похоже. Чего-то я сомневаюсь :-D , что найдётся ССЗБ, который _захочет_ проверять мою конструкцию из двух встречных граблей-маскарадеров.
>можно придумать туннели"Протуннелить" удалённый ---.0.3 в локальную сетку с помощью включения в мосты (там и тут) ethN(реального) и tun0(vpn). При этом всё равно нужна будет "развязка" -- роутить сам vpn м/у двумя одинаковыми сетками. А ещё NAT всё равно понадобится -- "внутренние" адреса прятать от "внешнего" сервера, если хосты пересекаются....
допустим:
ваш сервер:
eth0 - внутренняя локальная сеть 192.168.0.0 - его ip=192.168.0.1
eth1 - выход в другую подсеть 192.168.172.0 -его ip=192.168.172.1их сервер:
eth0 - внутренняя локальная сеть 192.168.0.0 - его ip=192.168.0.1
eth1 - выход в другую подсеть 192.168.100.0 -его ip=192.168.100.1и ваш сервер уже видет их сервер и на оборот
1 на клиентах вашей 192.168.0.0 сети
route add -host 192.168.0.3/32 gw 192.168.0.1 metric 1
2 на вашем сервере
route add -host 192.168.0.3/32 gw 192.168.100.1 metric 1
iptables -t nat -A POSTROUTING -o eth1 -d 192.168.0.3 -j SNAT -to-source 192.168.172.1циску незнаю, поэтому ее не упоминал
>и ваш сервер уже видет их сервер и на оборот
>1 на клиентах вашей 192.168.0.0 сети
>route add -host 192.168.0.3/32 gw 192.168.0.1 metric 1Кстати, в http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO-9.html aka file:///usr/share/doc/iptables/html/NAT-HOWTO-9.html написано, как это делается на сервере.
>2 на вашем сервере
>route add -host 192.168.0.3/32 gw 192.168.100.1 metric 1О, работает. Проверил - получил положенное "Host Unreachable" от подопытного роутера. %)
>iptables -t nat -A POSTROUTING -o eth1 -d 192.168.0.3 -j SNAT -to-source
>192.168.172.1Отличное, простое решение! %-)
>>Вообщем iptables невыручит
>
>В общем, похоже. Чего-то я сомневаюсь :-D , что найдётся ССЗБ, который
>_захочет_ проверять мою конструкцию из двух встречных граблей-маскарадеров.Вы-таки будете... радоваться, но "двойные виртуальные грабли" были _документированы_ проектом Netfilter, под не таким вольным :) названием: "The Double NAT MINI-HOWTO". Как решение проблемы, более-менее вытекающей из RFC 1918, кстати.
http://netfilter.org/documentation/HOWTO/netfilter-double-na...
И алиасы на интерфейсы использует, и два "встречных" роутера...
Приятно чувствовать себя "умным" открывателем велосипедов (& "дураком", не читающим TFM)! %)
Слишком сложно. Нельзя IP сервера поменять и прописать к нему маршруты на рутерах?
Можно не менять - добавить ещё один IP на интерфейс сервера. С такими зашибатыми конструкциями следующий админ будет нелестного мнения о Вас.
>Можно не менять - добавить ещё один IP на интерфейс сервера. С
>такими зашибатыми конструкциями следующий админ будет нелестного мнения о Вас.:) а никто и не говорит, что это все правильно.
при добавлением адреса 192.168.0.3 на интерфейсе сервера , все равно придется делать проброс
и следующему админу счастья это не добавит :)
>>Можно не менять - добавить ещё один IP на интерфейс сервера. С
>>такими зашибатыми конструкциями следующий админ будет нелестного мнения о Вас.
>
>:) а никто и не говорит, что это все правильно.
>при добавлением адреса 192.168.0.3 на интерфейсе сервера , все равно придется делать
>проброс
>и следующему админу счастья это не добавит :)Зачем проброс то?, взять IP из не используемой серой сети и прописать маршрут к ней где потребуется.
>>>Можно не менять - добавить ещё один IP на интерфейс сервера. С
>>>такими зашибатыми конструкциями следующий админ будет нелестного мнения о Вас.
>>
>>:) а никто и не говорит, что это все правильно.
>>при добавлением адреса 192.168.0.3 на интерфейсе сервера , все равно придется делать
>>проброс
>>и следующему админу счастья это не добавит :)
>
>Зачем проброс то?, взять IP из не используемой серой сети и прописать
>маршрут к ней где потребуется.или я не понял что Вы имеете ввиду или использовать, скажем так, 10.0.0.3 для доступа к 192.168.0.3 другой подсети?
Да, прицепить к удалённому серверу второй IP ну может 10.0.0.3 ? маска? главное чтоб с другими сетями не пересекалось. На cisco маршрут к 10.0.0.3. На slackware придётся SNAT для dest 10.0.0.3.
>Да, прицепить к удалённому серверу второй IP ну может 10.0.0.3 ? маска?
>главное чтоб с другими сетями не пересекалось. На cisco маршрут к
>10.0.0.3. На slackware придётся SNAT для dest 10.0.0.3.Согласен, но уже требует изменений и на своем, и не на своем сервере, что не всегда возможно.
В данном случае для меня было интересно попробывать получить доступ к удаленному серверу с адресом 192.168.0.3, при условии отправления запроса из подсети 192.168.0.0/24. :)
Изврат конечно же, но в этом и интерес. :)
Не такой уж и изврат, только клиентам маршруты прописывать.... Лучше сервер научить по арпу представляться 192.168.0.3.
>Не такой уж и изврат, только клиентам маршруты прописывать.... Лучше сервер научить
>по арпу представляться 192.168.0.3.Другими словами присвоить серверу еще и 192.168.0.3, что бы не прописывать маршруты у клиентов?
Не сомневаюсь, что решений еще много.
>Другими словами присвоить серверу еще и 192.168.0.3, что бы не прописывать маршруты
>у клиентов?
>Не, я не знаю какими средствами (просто знаю что теоретически возможно) - может arpd или ещё что - то, заставить сервер отвечать на запрос who-has 192.168.0.3.
Сам не делал.