Нужна помощь по iproute2 (3 сетки 1 провайдер. Проблема остается)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

inlan
Сообщения: 9

Нужна помощь по iproute2

Сообщение inlan »

Доброго времени суток!

Скажем так, относительно недавно со сменой работы стал счастливым администратором роутера (iptables, squid) с установленной ASPLinux 12. И ясен пень в Линухе я скажем так "не очень"
Суета началась когда к нам завели еще одну оптику с конвертором на 100мб/с для внутренней отчетности и типа документооборота, назовем сеть (NDE). В этой сети нету шлюза и соответственно и инета, просто одна большая сеть из цепочек свичов и хабов, компы и сервера в этой сети имеют "серые" IP-адреса вида 172.16.0.0/16.
Итак что имею:
1) сеть (INET) eth0 IP 11.22.33.44/24 gw 11.22.33.1
2) сеть (LAN) eth1 IP 192.168.0.1/24
3) сеть (NDE) eth2 IP 172.16.16.1/16
Проблема в том, что нужно выпускать SNAT-ом клиентов из (LAN) что в интернет что в NDE. (такая архитектура сети у меня)
Строчки из iptables.conf

Код:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 172.16.0.0/16 -o eth2 -j SNAT --to-source 172.16.16.1 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source 11.22.33.44


В таком случае работает только интернет, т.к. пакеты как я понимаю идут по default.

И сразу вопрос: почему linux не может разобраться с маршрутизацией когда как есть директ соединение? Это первое.
Во-вторых, как все-таки правильно прописать iproute2, чтобы нормально все начало работать? Имею в виду чтобы пакеты идущие в сеть NDE из LAN уходили именно туда по eth2, а не в инет по eth0? И также наоборот оттуда сюда?
Перечитал десятки наверно статей, но написаны они не совсем для моей ситуации, в основном там рассказано у кого 2 провайдера у кого 2 шлюза и так же балансировка трафика между провами, что мне абсолютно пока не надо. А у меня повторяюсь: есть Один шлюз и 2 ЛВС (на разных сетях 172 и 192).
Хотя кто его знает может и быть есть похожая на мою ситуацию статья, не знаю! говорю я нуб в линуксе все равно в упор не увижу.
На этом кажется вроде все
Люди, очень прошу, дельно помогите разобраться с маршрутизацией и просьба не давайте ссылки из google либо на мануалы всякие поверьте это не поможет!
И как все это дело запихнуть в стартап конф?
А! И чуть не забыл! iptables -F -t filter не помогает
Спасибо сказали:
grub
Сообщения: 128
ОС: Slackware 12.0

Re: Нужна помощь по iproute2

Сообщение grub »

ну вобщето iptables и squid это не роутер еще это просто прокси. Соответственно маршрутизировать он не обязан ;) Возможно просто надо включить маршрутизацию см proc/sys/net/ipv4/ip_forward

Если там 0 то пиши 1 и усе заработает... возможно.
Если 1, то ХЗ %)
Спасибо сказали:
inlan
Сообщения: 9

Re: Нужна помощь по iproute2

Сообщение inlan »

grub писал(а):
14.10.2008 18:14
ну вобщето iptables и squid это не роутер еще это просто прокси. Соответственно маршрутизировать он не обязан ;) Возможно просто надо включить маршрутизацию см proc/sys/net/ipv4/ip_forward

Если там 0 то пиши 1 и усе заработает... возможно.
Если 1, то ХЗ %)


Это я в первую очередь проверил стоит:
выставлено sysctl.conf на 1
что после перезапуска ОС есесна ip_forward=1

еще мысли есть?
Спасибо сказали:
grub
Сообщения: 128
ОС: Slackware 12.0

Re: Нужна помощь по iproute2

Сообщение grub »

неа. но есть предложение встать поснифить по интерфесам, посмотреть что там ходит. Может ходит но не натится, или еще какая-то фигня. "tcpdump -i eth0" "tcpdump -i eth1" etc...

кстати чтоб сохранить настройки iptables надо юзать iptables-save и iptables-restore

сохраняю я в ручную /usr/sbin/iptables-restore > /etc/rc.d/rc.firewall.conf

А загружаю по загрузке (кхм...) скриптом в /etc/rc.d :


firewall_start() {
if [ -x /usr/sbin/iptables-restore ]; then
echo -n "Starting iptables Firewall: "
/usr/sbin/iptables-restore < /etc/rc.d/rc.firewall.conf
echo "/usr/sbin/iptables-restore < /etc/rc.d/rc.firewall.conf"
fi
}

firewall_stop() {
iptables -F
}

firewall_restart() {
firewall_stop
sleep 1
firewall_start
}

case "$1" in
'start')
firewall_start
;;
'stop')
firewall_stop
;;
'restart')
firewall_restart
;;
*)
echo "usage $0 start|stop|restart"
esac


Да, и еще можно отрубить iptables "iptables -F" и посмотреть как будет без него, может он там чтото фильтрует в тихую... Ну или логи посмотреть, у меня в /var/log/syslog они ложаться...
Спасибо сказали:
Аватара пользователя
Ariasp
Сообщения: 254
Статус: NixLander

Re: Нужна помощь по iproute2

Сообщение Ariasp »

inlan писал(а):
14.10.2008 18:08
почему linux не может разобраться с маршрутизацией когда как есть директ соединение?

зачем сразу перекладывать свои проблемы на линукс :D
запости лучше вывод команды iptables -L или сразу iptables -L FORWARD
Спасибо сказали:
inlan
Сообщения: 9

Re: Нужна помощь по iproute2

Сообщение inlan »

На счет стартап спасибо очень пригодится, а на счет tcpdump -i eth2 надо посмотреть завтра, но, знаете у меня есть сомнение, что это что-то даст скорей всего роутер не знает куда отправлять пакеты предназначенные для сети NDE. Потому что когда запускаешь пинг на хост допустим 172.16.23.1 ответы получаю с адреса 192.168.0.1 Host is unreachable.
И скажите плиз в моем конкретно случае нужно ли указывать какие-то правила в iproute2?
Спасибо сказали:
inlan
Сообщения: 9

Re: Нужна помощь по iproute2

Сообщение inlan »

Ariasp писал(а):
14.10.2008 18:38
inlan писал(а):
14.10.2008 18:08
почему linux не может разобраться с маршрутизацией когда как есть директ соединение?

зачем сразу перекладывать свои проблемы на линукс :D
запости лучше вывод команды iptables -L или сразу iptables -L FORWARD


[root@gw ~]# iptables -nL FORWARD
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- mega.admin.host 0.0.0.0/0
ACCEPT all -- 192.168.0.0/24 172.16.0.0/16
ACCEPT all -- 172.16.0.0/16 192.168.0.0/24
QUEUE all -- 0.0.0.0/0 0.0.0.0/0

здесь mega.admin.host - внешний IP адрес моего компа по инету :D
QUEUE потому-что отправляет трафик внешки на демон биллинга, а на сеть NDE политика ACCEPT т.е. работа в обход демона
Спасибо сказали:
inlan
Сообщения: 9

Re: Нужна помощь по iproute2

Сообщение inlan »

может еще быть дело в PREROUTING?
и как правильно будет выглядеть строчка в iptables с PREROUTING-ом?
Спасибо сказали:
grub
Сообщения: 128
ОС: Slackware 12.0

Re: Нужна помощь по iproute2

Сообщение grub »

inlan писал(а):
15.10.2008 03:54
может еще быть дело в PREROUTING?
и как правильно будет выглядеть строчка в iptables с PREROUTING-ом?


ХЗ, я вобще тоже тут проходом. Как сетевик могу посоветовать 2 вещи:
1. Посмотреть как это все будет работать без iptables
2. Использовать журналирование, "-j LOG" тоесть, и смотреть syslog

Еще смутно помню, но вроде бы в пакете iptables есть утилита которая тестирует работу цепочек. Ну типа задаешь параметры пакета и она говорит как он проходит или где отбрасывается... Не помню как называется, может кто тут подскажет...
Спасибо сказали:
inlan
Сообщения: 9

Re: Нужна помощь по iproute2

Сообщение inlan »

Вывод команды:
[root@gw /]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- mega.admin.host 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
QUEUE all -- 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- mega.admin.host 0.0.0.0/0
ACCEPT all -- 192.168.0.0/24 172.16.0.0/16
ACCEPT all -- 172.16.0.0/16 192.168.0.0/24
QUEUE all -- 0.0.0.0/0 0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 mega.admin.host
QUEUE all -- 0.0.0.0/0 0.0.0.0/0

На строчку QUEUE прошу не обращать внимания, т.к. по этой строчке идет подсчет трафика интернет, работа сеток NDE и LAN разрешается правилом ACCEPT что до правила QUEUE.
mega.admin.host - мой рабочий комп с которого захожу по SSH.

а вот выдержка из правил iptables:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 172.16.0.0/16 -o eth2 -j SNAT --to-source 172.16.16.1
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source 11.22.33.44

В такой настройке сам роутер видит хосты на NDE, но клиентов выпускать отказывется.
Проблема продолжается.
Спасибо сказали:
inlan
Сообщения: 9

Re: Нужна помощь по iproute2

Сообщение inlan »

ну скажите плиз че-нить хотя бы в какую сторону мне смотреть или копать?
Спасибо сказали:
Аватара пользователя
Kaz_n
Сообщения: 59

Re: Нужна помощь по iproute2

Сообщение Kaz_n »

inlan писал(а):
14.10.2008 18:08
1) сеть (INET) eth0 IP 11.22.33.44/24 gw 11.22.33.1
2) сеть (LAN) eth1 IP 192.168.0.1/24
3) сеть (NDE) eth2 IP 172.16.16.1/16
Проблема в том, что нужно выпускать SNAT-ом клиентов из (LAN) что в интернет что в NDE. (такая архитектура сети у меня)
Строчки из iptables.conf

Код:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 172.16.0.0/16 -o eth2 -j SNAT --to-source 172.16.16.1 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source 11.22.33.44


В таком случае работает только интернет, т.к. пакеты как я понимаю идут по default.

И сразу вопрос: почему linux не может разобраться с маршрутизацией когда как есть директ соединение? Это первое.
Во-вторых, как все-таки правильно прописать iproute2, чтобы нормально все начало работать? Имею в виду чтобы пакеты идущие в сеть NDE из LAN уходили именно туда по eth2, а не в инет по eth0? И также наоборот оттуда сюда?
Перечитал десятки наверно статей, но написаны они не совсем для моей ситуации, в основном там рассказано у кого 2 провайдера у кого 2 шлюза и так же балансировка трафика между провами, что мне абсолютно пока не надо. А у меня повторяюсь: есть Один шлюз и 2 ЛВС (на разных сетях 172 и 192).
Хотя кто его знает может и быть есть похожая на мою ситуацию статья, не знаю! говорю я нуб в линуксе все равно в упор не увижу.
На этом кажется вроде все



Попробуй убрать правило iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 172.16.0.0/16 -o eth2 -j SNAT --to-source 172.16.16.1
Оставить только

Код: Выделить всё

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source 11.22.33.44

для интернета и добавить маршрут до NDE через route add не забыв прописать адрес шлюза на клиентских машинах
"Если не можешь победить,
все равно победи!"
[indent] У.С. Грант
Спасибо сказали:
Аватара пользователя
Ariasp
Сообщения: 254
Статус: NixLander

Re: Нужна помощь по iproute2

Сообщение Ariasp »

Kaz_n писал(а):
15.10.2008 20:47
Попробуй убрать правило iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 172.16.0.0/16 -o eth2 -j SNAT --to-source 172.16.16.1
Оставить только

Код: Выделить всё

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source 11.22.33.44

для интернета и добавить маршрут до NDE через route add не забыв прописать адрес шлюза на клиентских машинах

вот нахрен добавлять маршрут через route add, если по утверждению автора есть директ коннект и
сам роутер видит хосты на NDE

чтобы в наличии директ коннекта не осталось сомнений, неплохо бы выложить здесь результат route -n;
убирать snat правило для eth2 тоже нельзя -- как по-вашему хосты из NDE определят путь в 192.168.0.0/24?
Спасибо сказали:
Аватара пользователя
Ariasp
Сообщения: 254
Статус: NixLander

Re: Нужна помощь по iproute2

Сообщение Ariasp »

inlan писал(а):
15.10.2008 03:54
может еще быть дело в PREROUTING?

PREROUTING здесь не при делах; детализируй вывод
iptables -L FORWARD -vx
заодно и route -n c
iptables -t nat -L -vx
а также -- что выдаёт tracert c клиентов в NDE?
Спасибо сказали:
inlan
Сообщения: 9

Re: Нужна помощь по iproute2

Сообщение inlan »

PREROUTING здесь не при делах; детализируй вывод
iptables -L FORWARD -vx
заодно и route -n c
iptables -t nat -L -vx
а также -- что выдаёт tracert c клиентов в NDE?


Здраствуйте!
Спасибо что откликнулись
вот результат команды:
#1#########

Код:

[root@gw ~]# iptables -nL FORWARD -vx Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 14 832 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 59856 82223655 ACCEPT all -- * * admin.host 0.0.0.0/0 0 0 ACCEPT all -- * * 192.168.0.0/24 172.16.0.0/16 0 0 ACCEPT all -- * * 172.16.0.0/16 192.168.0.0/24 816817 556137013 QUEUE all -- * * 0.0.0.0/0 0.0.0.0/0


#2#########

Код:

[root@gw ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 11.22.33.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth2 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth2 0.0.0.0 11.22.33.44 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth1



#3#########

Код:

[root@gw ~]# iptables -t nat -nL -vx Chain PREROUTING (policy ACCEPT 420370 packets, 40970165 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 10 packets, 364 bytes) pkts bytes target prot opt in out source destination 14634 708798 SNAT all -- * eth0 0.0.0.0/0 0.0.0.0/0 to:11.22.33.44 Chain OUTPUT (policy ACCEPT 3482 packets, 248453 bytes) pkts bytes target prot opt in out source destination


#4#########

Traceroute со стороны NDE глупо делать т.к. в этой сети нет маршрутизации (ethernet-сеть из хабов и свичей). Думаю понятно почему.
А! и причем уточняю, что еще с моей стороны должны клиенты LAN выходить в сеть NDE SNAT-ом.

#4#########
От себя выкладываю текущие значения ядра:
[root@gw ~]# sysctl -A | grep forward
net.ipv4.ip_forward = 1
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.eth1.forwarding = 1
net.ipv4.conf.eth1.mc_forwarding = 0
net.ipv4.conf.eth0.forwarding = 1
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth2.forwarding = 1
net.ipv4.conf.eth2.mc_forwarding = 0
net.ipv6.conf.lo.forwarding = 0
net.ipv6.conf.eth1.forwarding = 0
net.ipv6.conf.eth2.forwarding = 0
net.ipv6.conf.eth0.forwarding = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.default.forwarding = 0
Спасибо сказали:
inlan
Сообщения: 9

Re: Нужна помощь по iproute2

Сообщение inlan »

Еще светлые мысли есть?
Спасибо сказали:
Аватара пользователя
Ariasp
Сообщения: 254
Статус: NixLander

Re: Нужна помощь по iproute2

Сообщение Ariasp »

inlan писал(а):
16.10.2008 20:51
Traceroute со стороны NDE глупо делать т.к. в этой сети нет маршрутизации (ethernet-сеть из хабов и свичей). Думаю понятно почему.

конечно понятно; интересует tracert в сторону NDE из 192.168.0.0
но:
Chain POSTROUTING (policy ACCEPT 10 packets, 364 bytes)
pkts bytes target prot opt in out source destination
14634 708798 SNAT all -- * eth0 0.0.0.0/0 0.0.0.0/0 to:11.22.33.44

в цепочке одно правило; собственно правила
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 172.16.0.0/16 -o eth2 -j SNAT --to-source 172.16.16.1
не наблюдается (с поправкой на порядок следования правил, оно должно теперь выглядеть так
iptables -t nat -I POSTROUTING 1 -s 192.168.0.0/24 -d 172.16.0.0/16 -o eth2 -j SNAT --to-source 172.16.16.1);
в таком раскладе весь траф целиком снатится в 11.22.33.44; т.е. это явно не соответствует заявленным в самом начале
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 172.16.0.0/16 -o eth2 -j SNAT --to-source 172.16.16.1
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source 11.22.33.44

также:
0.0.0.0 11.22.33.44 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth1

-- это лажа какая-то; зачем в дефолтные шлюзы определять 2 адреса (дефолтный шлюз всё равно будет один), причём оба принадлежат тому же хосту (!); по-хорошему должно быть что-то вида
0.0.0.0 11.22.33.1 0.0.0.0 UG 0 0 0 eth0
Спасибо сказали:
Burmuley
Сообщения: 44

Re: Нужна помощь по iproute2

Сообщение Burmuley »

Код:

[root@gw ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 11.22.33.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 172.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth2 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth2 0.0.0.0 11.22.33.44 0.0.0.0 UG 0 0 0 eth0 0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 eth1

это как? О_О

запостите вывод команды ip route
оно более понятную картинку рисует, может и сами поймете, что куча дефолтных шлюзов - это есть зло...
у вас есть сеть 172.16.0.0/16, и есть какой-то шлюз в нее (где там у вас оптика с концентратором), вот и пропишите маршрут в эту сеть
ip route add 172.16.0.0/16 via 172.16.0.1 (или какой там ip шлюза у вас) dev eth2
и собственно SNAT для этой сети можно будет убрать вообще
--
Registered Linux user number 366113.
Спасибо сказали:
sdukshis
Сообщения: 83
ОС: Linux

Re: Нужна помощь по iproute2

Сообщение sdukshis »

inlan писал(а):
17.10.2008 14:08
Еще светлые мысли есть?


Есть.
Подумайте как следует зачем Вам SNAT на 172.16.0.0?

У Вас стоит задача в маршрутизации трафика. Поэтому правило -d 172.16.0.0/16 -j SNAT надо убрать.
Далее посмотреть есть ли маршрут к 172.16.0.0/16 с помощью route (скорее всего он есть, но на всякий случай).

Далее Вас должно беспокоить только одно: что из себя представляет сеть 172.16.0.0/
Нет ли там других 192.168.0.0 скрытых за nat и знает ли 172.16.16.1, что сеть 192.168.0.0 находиться за Вашим роутером?
Спасибо сказали: