URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 20302
[ Назад ]

Исходное сообщение
"Cisco NAT - как достучаться до локального хоста снаружи"

Отправлено SergKz , 06-Янв-10 12:42 
Есть маршрутизатор Cisco 2621, на нём два интерфейса:
fa0/1 включенный во внешнюю сетку, описанный как:
===
interface FastEthernet0/1
ip address 172.26.255.20 255.255.255.0
ip nat outside
end
===
и fa0/0, включенный в локалку
===
interface FastEthernet0/0
ip address 172.22.82.21 255.255.255.0 secondary
ip address 172.26.20.254 255.255.255.0
ip nat inside
end
====
На внутреннем интерфейсе (fa0/0) сидит (через простой свитч) хост, на котором НЕ ПРОПИСАНО НИКАКИХ ШЛЮЗОВ, то есть он работает только в локалке, адрес его 172.22.82.20, мало того, даже пинг с самой циски на него идёт только если явно указать адрес источника из его подсетки, вот так:
ping 172.22.82.20 source 172.22.82.21
Надо сделать так, чтобы пакеты, прилетевшие снаружи на интерфейс fa0/1 с адресом назначения 172.22.82.20, на внутреннем интерфейсе маскарадились адресом источника 172.22.82.21. Может даже чтобы ВООБЩЕ все пакеты идущие на 172.22.82.20 маскарадились исходником 172.22.82.21.
На линуксе я знаю как:
iptables -t nat -I POSTROUTING -d 172.22.82.20 -j SNAT --to-source 172.22.82.21
На циске такое ощущение, что не поменяв местами inside и outside такого не сделать, но этого делать нельзя - есть несколько NATов которые в работе и их прерывать нельзя.

Пните меня в нужную сторону, плиз....
Заранее благодарен


Содержание

Сообщения в этом обсуждении
"Cisco NAT - как достучаться до локального хоста снаружи"
Отправлено Vitaly_loki , 06-Янв-10 16:04 
Делал когда-то давно так:
ip nat inside source static tcp 192.168.0.1 25 interface FastEthernet0/0 25

т.е. пакет, пришедший на внешний интерфейс на 25 порт, пробрасывается внутрь на 192.168.0.1:25

Оно?

Адаптируйте под себя



"Cisco NAT - как достучаться до локального хоста снаружи"
Отправлено SergKz , 06-Янв-10 18:27 
>Делал когда-то давно так:
>ip nat inside source static tcp 192.168.0.1 25 interface FastEthernet0/0 25
>
>т.е. пакет, пришедший на внешний интерфейс на 25 порт, пробрасывается внутрь на
>192.168.0.1:25
>
>Оно?
>Адаптируйте под себя

Немного не то. Тут подразумевается что на хосте 192.168.0.1 прописан маршрут по умолчанию все неизвестные отправлять на внутренний адрес циски.
В моём случае никаких шлюзов на внутреннем хосте не прописано.
К тому же через port forwarding не прокинуть icmp


"Cisco NAT - как достучаться до локального хоста снаружи"
Отправлено spunky , 07-Янв-10 22:37 
Возможно (т.е. может быть, я не знаю точно, но может быть) тебе подойдёт вариант "ip nat outside source static", почитай http://www.cisco.com/en/US/docs/ios/12_3/ipaddr/command/refe... и http://www.cisco.com/en/US/tech/tk648/tk361/technologies_con...

Менять местами outside & inside приведёт лишь к изменению порядка обработки пакета - либо он маршрутизируется и натится, либо натится и маршрутизируется.


"Cisco NAT - как достучаться до локального хоста снаружи"
Отправлено spunky , 07-Янв-10 22:41 
>На внутреннем интерфейсе (fa0/0) сидит (через простой свитч) хост, на котором НЕ
>ПРОПИСАНО НИКАКИХ ШЛЮЗОВ, то есть он работает только в локалке, адрес
>его 172.22.82.20, мало того, даже пинг с самой циски на него
>идёт только если явно указать адрес источника из его подсетки, вот
>так:
>ping 172.22.82.20 source 172.22.82.21

это более чем странно. Насколько мне известно (а ошибаюсь я чуть чаще чем всегда), кошка выбирает в качестве source адрес исходящего интерфейса, должно бы работать и без указания источника :( В общем - странно.


"Cisco NAT - как достучаться до локального хоста снаружи"
Отправлено SergKz , 09-Янв-10 09:18 
>>идёт только если явно указать адрес источника из его подсетки, вот
>>так:
>>ping 172.22.82.20 source 172.22.82.21
>
>это более чем странно. Насколько мне известно (а ошибаюсь я чуть чаще
>чем всегда), кошка выбирает в качестве source адрес исходящего интерфейса, должно
>бы работать и без указания источника :( В общем - странно.
>

Видимо вы просто не сталкивались. Cisco IOS в отличие от всех прочих систем при отправке пакета с интерфейса на адрес сетки, которая прописана на этом же интерфейсе как secondary (alias для unix'ов), в качестве исходного адреса пакета ВСЕГДА подставляет ОСНОВНОЙ адрес интерфейса.
Проблему вроде бы решил вот таким образом (172.26.11.22 - это адрес с которого надо достукиваться до внутреннего хоста):
ip nat inside source static 172.22.82.20 172.26.20.82
ip nat outside source static 172.26.11.22 172.22.82.22
ip route 172.22.82.22 255.255.255.255 172.26.255.11
последний пришлось вставить из-за ещё одной особенности IOS описанной здесь: http://www.lissyara.su/articles/cisco/double_nat/
Вот только происходит странная штука: теперь нужный хост пингую как по 172.22.82.20 так и по 172.26.20.82, но после первого же пакета на адрес 172.22.82.20 адрес НАТ 172.26.20.82 становится недоступен, пока не сделаешь на циске "clear ip nat translation".
Беда невеликая - использовать один из них, но все равно занятно.
И насколько проще это делается с iptables :-)