Jump to content

Recommended Posts

Posted

Возникла непонятка с NAT на машине с lISG.

Всё запущено на CentOS 6.8, 2.6.32-642.3.1.el6.x86_64.

"Обычный" NAT работает

iptables -t nat -I POSTROUTING -o vlan61 -s 10.20.0.0/16 -j SNAT --to-source AAA.BBB.18.131

где AAA.BBB.18.131 - публичный IP на vlan61.

Решил сделать NAT "в диапазон IP" (persistent)

iptables -t nat -I POSTROUTING -o vlan61 -s 10.20.0.0/16 -j SNAT --to-source AAA.BBB.18.161-AAA.BBB.18.190 --persistent

И вот тут не поехало.. На vlan61 tcpdump-ом от клиентов трафик с IP выделенного диапазона вижу, к клиентам - нет. Соотв. у клиента трассировка затыкается на роутере (коммутатор DGS-3120 с IP AAA.BBB.18.130). AAA.BBB.18.130 является шлюзом машины lISG

Публичная подсеть (AAA.BBB.18.128/25), выделенная аплинком, порезана на три: AAA.BBB.18.128/27, AAA.BBB.18.160/27, AAA.BBB.18.192/26.

В первой находятся роутер и машина с lISG, во второй планировал реализовать тот самый NAT persistent.

На роутере в NAT подсеть прописан маршрут AAA.BBB.18.160/27 AAA.BBB.18.131.

На машине с lISG эту подсеть завернул в блэкхол (ip route add blackhole AAA.BBB.18.160/27), пробовал и убирать из блэкхол. Результат тот же...

В iptables FORWARD (после правил LISG) добавил: FORWARD -s AAA.BBB.18.160/27 -j ACCEPT и FORWARD -d AAA.BBB.18.160/27 -j ACCEPT.

Ничего не изменилось..

Изначально погрешил на кривую маршрутизацию у провайдера аплинка, но оказалось, что он тут ни при чём.

Попробовал назначить IP AAA.BBB.18.189/27 alias-ом на vlan61 - трассировка с этим source IP пошла, из "внешки" на него тоже..

 

Что я сделал не так??

Posted
' timestamp='1480402955' post='1347476']

Варианты решения проблемы:

1. Эту сеть надо повешать алиасами на lo:

2. echo 1 > /proc/sys/net/ipv4/ip_nonlocal_bind

Т.е. 1-й вариант такой:

ifconfig lo:0 AAA.BBB.18.160/32
ifconfig lo:0 AAA.BBB.18.161/32
ifconfig lo:1 AAA.BBB.18.162/32
....
ifconfig lo:30 AAA.BBB.18.191/32

Так?

 

По 2-му варианту тоже есть вопрос. Прочёл в интернетах следующее:

3.1.7. ip_nonlocal_bind

 

Установка этой переменной позволяет отдельным локальным процессам выступать от имени внешнего (чужого) IP адреса. Это может оказаться полезным в некоторых случаях, когда необходимо "прослушивать" внешние (чужие) IP адреса, например -- сниффинг чужого траффика. Однако, эта опция может оказывать отрицательное влияние на работоспособность отдельных приложений.

 

Эта переменная может иметь два значения -- 0 или 1. Если установлено значение 0, то опция отключена, 1 -- включена. Значение по-умолчанию -- 0.

По выделенному в цитате что-нибудь можете добавить? В плане каких таких "других приложений", и что с ними может приключиться?

Posted

Т.е. 1-й вариант такой:

ifconfig lo:0 AAA.BBB.18.160/32
ifconfig lo:0 AAA.BBB.18.161/32
ifconfig lo:1 AAA.BBB.18.162/32
....
ifconfig lo:30 AAA.BBB.18.191/32

Так?

 

Как-то логичней было бы

 

ip addr add AAA.BBB.18.161/32 dev lo

...

Posted

никогда диапазоны не вешал на лупбек и прочих извращений не делал, только в блекхол заворачивал и все работало, именно с таким правилом как у вас. впечатление, что ваш роутер не знает мака, куда роутить ваш диапазон (судя по тому, что вы не видите в дампе входящих пакетов). и кстати совсем незачем терять два ипа - .160 и .191. оно вполне корректно работает с "--to-source AAA.BBB.18.160-AAA.BBB.18.191"

 

ps. еще есть подозрение, что ваша AAA.BBB.18.160/27 (или более толстая) висит на вашем роутере и когда вы повесили алиас на влану, роутер записал в свой арпкеш (или спросил через арп) соответствие мака вашей вланы и AAA.BBB.18.189, поэтому у вас трафик пошел в обратную сторону. в общем я бы ковырял не iptables, а роутер.

Posted

Так?

Не обязательно /32, можно и побольше побить, хоть /24.

 

В плане каких таких "других приложений", и что с ними может приключиться?

Ниразу таких "других приложений" не видел. Возможно имееются ввиду те, которые будут слушать rawsocket, и не ожидают там увидеть чужие адреса.

 

никогда диапазоны не вешал на лупбек и прочих извращений не делал, только в блекхол заворачивал и все работало, именно с таким правилом как у вас. впечатление, что ваш роутер не знает мака, куда роутить ваш диапазон (судя по тому, что вы не видите в дампе входящих пакетов)

Входящие пакеты не появятся, если нет маршрута. А маршрут будет либо при arp-ответе, если сеть одна и та же, либо при анонсе по ротоколу маршрутизации, если сети разные.

Возможно на той стороне криво сделано именно через arp (т.е. у вышестоящего что-то вроде ip route add x.x.x.x/y dev eth0 вместо via z.z.z.z)

Posted
' timestamp='1480501165' post='1347811']

Не обязательно /32, можно и побольше побить, хоть /24.

Не совсем понял.. NAT подсеть у меня /27.

Я так понимаю, Вы считаете, чтобы в данном случае NAT заработал, будет достаточно назначить алиасом на lo всего ОДИН IP с маской /27?

' timestamp='1480501165' post='1347811']

В плане каких таких "других приложений", и что с ними может приключиться?

Ниразу таких "других приложений" не видел. Возможно имееются ввиду те, которые будут слушать rawsocket, и не ожидают там увидеть чужие адреса.

Не уверен, но вроде dhcpd юзает rawsocket? А он на машине есть. Правда, dhcp запросы приходят на него через релей.

Не будет здесь проблем?

' timestamp='1480501165' post='1347811']

Входящие пакеты не появятся, если нет маршрута. А маршрут будет либо при arp-ответе, если сеть одна и та же, либо при анонсе по ротоколу маршрутизации, если сети разные.

Возможно на той стороне криво сделано именно через arp (т.е. у вышестоящего что-то вроде ip route add x.x.x.x/y dev eth0 вместо via z.z.z.z)

Я правильно понимаю, если у вышестоящего прова сделано именно так, как Вы описали, то все любые другие "правильные" манипуляции с маршрутизацией с моей стороны не помогут?

Или всё же у меня есть возможность решить всё общепринятым путём? Ну например, на "вышестоящем роутере" (DGS-3120) что-то поправить?

Posted (edited)

Я правильно понимаю, если у вышестоящего прова сделано именно так, как Вы описали, то все любые другие "правильные" манипуляции с маршрутизацией с моей стороны не помогут?

честно перечитал все 3 раза. если у вас действительно длинк маршрутизатор, то все дело в нем, увы на л3 я его не пользовал.

но 1. ничего не надо в лупбэки прописывать. и какие то no_bind тоже в жизни не делал.

в общем даже нат сеть не назначайте пока. идите на 3120 и sh ipr, может для теста вы там эту подсеть подымали и забыли удалить. пинг с инета и дамп на сетевой. Если он действительно л3, значит собака там зарыта, прошивку в конце концов обновить ибо и покруче у длинков моделей есть баги в не стандартой маской маршрута. они видимо все на 24 тестят

Edited by nshut
Posted

Я так понимаю, Вы считаете, чтобы в данном случае NAT заработал, будет достаточно назначить алиасом на lo всего ОДИН IP с маской /27?

Да, это именно так и работает. На lo вешается не один ip, а вся подсеть сразу.

 

Не будет здесь проблем?

Не знаю, проще проверить.

 

Я правильно понимаю, если у вышестоящего прова сделано именно так, как Вы описали, то все любые другие "правильные" манипуляции с маршрутизацией с моей стороны не помогут?

Именно так.

Posted
' timestamp='1480604995' post='1348344']

Я так понимаю, Вы считаете, чтобы в данном случае NAT заработал, будет достаточно назначить алиасом на lo всего ОДИН IP с маской /27?

Да, это именно так и работает. На lo вешается не один ip, а вся подсеть сразу.

Т.е. вот так -

ifconfig lo:0 AAA.BBB.18.160/27

?

 

И правило NAT в таком случае будет выглядеть так -

iptables -t nat -I POSTROUTING -o vlan61 -s 10.20.0.0/16 -j SNAT --to-source AAA.BBB.18.161-AAA.BBB.18.190 --persistent

? Т.е. БЕЗ "адреса сети" - AAA.BBB.18.160

Posted

Т.е. вот так -

ifconfig lo:0 AAA.BBB.18.160/27

?

Синтаксис у ifconfig вроде другой, но идея верная.

 

 

? Т.е. БЕЗ "адреса сети" - AAA.BBB.18.160

Адрес сети убирать нужно только в том случае, если аплинк его по каким-то причинам не маршрутизирует. Узнаете экспирементально, нет смысла один адрес просто так терять.

Posted
' timestamp='1480658431' post='1348477']

Т.е. вот так -

ifconfig lo:0 AAA.BBB.18.160/27

?

Синтаксис у ifconfig вроде другой, но идея верная.

Он самый

ifconfig lo:0 AAA.BBB.18.160/27 up

lo:0      Link encap:Local Loopback
         inet addr:AAA.BBB.18.160  Mask:255.255.255.224
         UP LOOPBACK RUNNING  MTU:65536  Metric:1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.