Подключился к провайдеру Матрикс (в Спб), они мне выдали две подсетки (4 и 16 адресов), для взаимодействия маршрутизаторов и рабочая сеть (далее РС)соответственно.
Сеть на 4 адреса для взаимодействия маршрутизаторов дальше их шлюза не маршрутизируется (такие у них правила, но это отдельная история :), а пакеты из РС, проходят сквозь мой и их шлюз дальше в инет, то есть фильтры пропускают только пакеты из РС.
Собственно проблема:
У шлюза есть два IP: один из подсетки на 4 адреса для взаимодействия с их шлюзом (внешний IP), который в таблице маршрутизации выставлен Default маршрутом,второй обращенный во внутреннюю РС (внутренний IP). Когда я пытаюсь к примеру пингануть какой-нибудь хост в сети пакеты вышвыриваются через Default маршрут и инкапсулируют внутри внешний IP и соответственно фильтры провайдера его рубят.
Как сделать так чтобы пакеты все соединения инициализировались от имени внутреннего IP, но выходили через внешний IP, тогда они фильтром не зарубятся?
Сижу уже третий день но через файрвол или таблицу маршрутизации ничего сделать не удалось.
Спасибо за ответы.
Хм.. По моему всё правильно:
1. Провайдер выделил твоему маршрутизатору ипишник из специальной сети (это то что ты говоришь "4 адреса", вообще-то там АДРЕСА 2, а ещё ID подсети и broadcast)
2. На этот ипишник "смапил" твою РС(рабочую подсеть)Настроил ты тоже вроде правильно, но допустим тебе дали сеть(!) х.х.х.232/27 на внутренем интерфейсе роутера должен быть ипишник х.х.х.233/27, а на первом клиенте х.х.х.234/27 и т.д.
в таблице маршрутизации должно быть нечто подобное:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
х.х.х.232 0.0.0.0 255.255.255.248 U 0 0 0 eth1
х.х.х.192 0.0.0.0 255.255.255.224 U 0 0 0 eth0 - (это "спец" сеть роутеров)
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 х.х.х.193 0.0.0.0 UG 0 0 0 eth0 - а это шлюз сети роутеров
NAT (несмотря на некоторую сумбурность в изложении проблемы)./poige
--
http://www.i.morning.ru/~poige/
>NAT (несмотря на некоторую сумбурность в изложении проблемы).
>
>/poigeда, это делается именно так. :-)
/poige
--
http://www.i.morning.ru/~poige/
ip ro a default via $DEFAULT_GW dev $GW_IF src $INSIDE_IP
неплохо, но 100 % что у него Linux?.../poige
>ip ro a default via $DEFAULT_GW dev $GW_IF src $INSIDE_IP
Интересно но как это сделать на FreeBSD?
Что это за команда ip ro?To Tangar: я прекрасно знаю что такое базовый адрес подсети и широковещательный, и как шлюз он работает, но как отдельная рабочая станция он кидает пакеты через IP который служит только для взаимодействия маршрутизаторов, и пакеты рубятся провайдером так как он такие пакеты не пропускает, а пропускает только пакеты в которых инкапсулирован IP из рабочей подсети (кстати все IP реальные и NAT тут не причем).
>To Tangar: я прекрасно знаю что такое базовый адрес подсети и широковещательный,
>и как шлюз он работает, но как отдельная рабочая станция он
>кидает пакеты через IP который служит только для взаимодействия маршрутизаторов, и
>пакеты рубятся провайдером так как он такие пакеты не пропускает, а
>пропускает только пакеты в которых инкапсулирован IP из рабочей подсети (кстати
>все IP реальные и NAT тут не причем)."отдельная рабочая станция" А! Так это с него,а не с клиентов не работает?
>ip ro a default via $DEFAULT_GW dev $GW_IF src $INSIDE_IP
ip route add default via $DEFAULT_GW dev $GW_IF src $INSIDE_IP
Это сокращение.
Если я правильно понял, то ты имеешь на своюм шлюза сетевыху с ip_inet а алиасом ip_routers, причем сеть для роутеров в прямой видимости...то маршрут по умалчанию инет!!!!!
при обращении к роутеру пакет пойдет с ip для сети роутера
У провайдера прописан на маршрут на твою внутреннию сеть? А вдруг нет? Или ты что то не договариваешь.
Просто у меня такая же ситуация как ты описал. Главное что бы внутри у тебя не было таких же сетей с ip как у сети роутера.
Ладно абстрагируемся от моей ситуации а то мне кажется я всех запуталК примеру есть машина сконфигурированная шлюзом
у неё есть два ip 67.1.1.2 и 68.1.1.1.
Адрес 67.1.1.2 обращён к провайдеру и выставлен default маршрутом в таблице маршрутизации, 68.1.1.1 обращен в мою локальную сеть.На шлюзе когда я пытаюсь что-то сделать обращаясь к какому-нибудь хосту в инете например набираю команду ping или работаю с ftp клиентом все пакеты он выбрасывает через ip 67.1.1.2 и внутри пакета естественно инкапсулирует адрес 67.1.1.2, то есть он является source адресом.
Надо сделать так чтобы source адресом был 68.1.1.1 но выкидывались пакеты через ip 67.1.1.2.P.S. в инете на какой-то конференции я нашел такой-же вопрос, человеку опять же дали решение в линуксе, в конце-концов он перешел на линукс вот из-за такой фигни, неужели и мне придется это делать?
[...]И мне в 3-й раз придется сказать NAT. =8-)
/poige
--
http://www.i.morning.ru/~poige/