LINUX.ORG.RU
ФорумAdmin

iptables nat

 ,


0

1

Здравствуйте, товарищи!

Надеюсь лишь на наше рабочее движение!

В общем, ситуация такая
Компьютер А
(eth0)ip=10.31.86.2/24, default gw=10.31.86.1

Компьютер B
(eth0)ip=192.168.0.106/24, default gw=192.168.0.101
(eth1)ip=10.30.139.2/24, gw=none

Компьютер С(маршрутизатор + nat, ОС Debian 8.1)
(eth0)ip=192.168.0.102/24, gw=none
(eth2)ip=10.30.139.102/24, default gw=10.30.139.1
Содержимое rc.local
iptables -A INPUT -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A FORWARD -j ACCEPT
iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.0/24 -j SNAT --to-source 10.30.139.102
rc.local ошибок не содержит, судя по логу.

Сеть 10.31.86.0/24 и 10.30.139.0/24 видят друг друга.

Теперь сама проблема: мне нужно по RDP с А подключиться к B. A видит напрямую B, но B не может передать ответ по eth1(10.30.139.0/24), B может ответить через маршрутизатор C. C, получая пакеты от B, делает nat и переправляет пакеты дальше. Все работает, и да, я понимаю, что так не должно быть, но сейчас ничего не могу поделать и не могу спрятать B за маршрутизатор целиком и делать портфорвардинг и тд, вот так вот тут все работает, но суть не в этом. Проблема моя заключается в том, что работает это все лишь в том случае, если iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.0/24 -j SNAT --to-source 10.30.139.102 содержит именно -s 192.168.0.0/24, хотя по идее все должно работать и просто с -o eth2. Вот это я и не могу понять, почему обязательно нужно указывать -s в данной ситуации? Если я убираю -s 192.168.0.0/24, то все машины из сети 192.168.0.0/24 отлично выходят в инет, но вот машины из других сетей, как машина A(10.31.86.2/32) никак не может подключиться к B(10.30.139.2/32). Куда копать, товарищи?

Откуда вы зомбированные беретесь? Поимите для связи локалок и впн сетей НАТ не нужет, все решается маршрутами, НАТ служит для связи антернета и локалок все точка, использование его для других целей стрельба по мухам из базуки и говорит о неправильности построения сети.

vxzvxz ★★★ ()
Ответ на: комментарий от vxzvxz

Во-первых, выданная нам сеть 10.30.139.0/24 нашим нуждам не удовлетворяет, поэтому было принято решение о создании маршрутизатора с nat, чтобы была возможность иметь сколько угодно сетей под свои нужны. Для нас она, по факту, как выданный провайдером внешний ip, в нашем случае 10.30.139.102. Да, ряд серверов имеет ip-адреса из этого же диапазона и это проблема, но я уже сказал, что я вижу ее, но перестраивать всю сеть сейчас нет возможности. Во-вторых, прошу не оффтопить, и если есть что сказать по существу проблемы, я рад буду услышать.

firstcalled ()
Ответ на: комментарий от vxzvxz

Меня больше интересует странное поведение iptables и почему такая существенная разница в «поведении» из-за одного ключа -s ?

firstcalled ()

A видит напрямую B, но B не может передать ответ по eth1(10.30.139.0/24), B может ответить через маршрутизатор C.

Это как (A видит напрямую B)?

dexpl ★★★★★ ()
Ответ на: комментарий от dexpl

То есть пинг идет от A до B без моего вмешательства, эти два диапазона предоставлены провайдером, за их настройку я не отвечаю, все, что нужно, чтобы машина из A(10.31.86.0/24) увидела машину из B(10.30.139.0/24) - это предоставить машинам соответствующие адреса и подключить к сети.

firstcalled ()
Ответ на: комментарий от firstcalled

Если пинг (и прочий трафик) от A до B идет, а от B до A — нет, то что-то странное творится либо у провайдера, либо (скорее всего, как мне кажется) на B.

почему такая существенная разница в «поведении» из-за одного ключа -s

Команда iptables -t nat -A POSTROUTING -o eth2 -s 192.168.0.0/24 -j SNAT --to-source 10.30.139.102 говорит "SNAT'нуть от 10.30.139.102 все, идущее через хост, что приходит из 192.168.0.0/24 и уходит через eth2". Команда iptables -t nat -A POSTROUTING -o eth2 -j SNAT --to-source 10.30.139.102 говорит "SNAT'нуть от 10.30.139.102 все, идущее через хост, что уходит через eth2, невзирая на то, откуда приходит".

Во-первых, выданная нам сеть 10.30.139.0/24 нашим нуждам не удовлетворяет, поэтому было принято решение о создании маршрутизатора с nat, чтобы была возможность иметь сколько угодно сетей под свои нужны.

Если "физика" у вас своя и «свои нужды» заключаются обмене трафиком между локальными машинами, то или nat не нужен, или я чего-то очень не понимаю.

dexpl ★★★★★ ()
Ответ на: комментарий от dexpl

Ура, вот мы и ближе к делу! Да, я понимаю, что в случае, когда мы указываем -s x.x.x.x/x, то мы суживаем правило до конкретной сети и чтобы только трафик из этой сети подвергался SNAT. И тут вопрос, почему в итоге сессия RDP от А до B работает прекрасно, если у меня есть в правиле указание -s 192.168.0.0/24 и не работает, если его нет, хотя по факту, если мы не указали -s, то SNAT'у должен подвергаться весь трафик. Я понимаю, я объясняю сумбурно, но у меня получается такая вот карусель от А(10.31.86.2/24) -> до B(10.30.139.2/24, B может отправлять трафик в другие сети только через шлюз 192.168.0.102, у B два интерфейса соответственно), от B(192.168.0.106/24) -> до C(192.168.0.102, С также имеет два интерфейса+nat, полученный трафик от B на машине C подвергается SNAT и выходит через 10.30.139.102 и уходит прямиком к А(10.31.86.2). И вот почему с -s 192.168.0.0/24 все работает, а без -s - нет. В чем подвох?

firstcalled ()
Ответ на: комментарий от firstcalled

мы суживаем правило до конкретной сети и чтобы только трафик из этой сети подвергался

неверно, таблица нат не может быть использованна для фильтрации и ограничений, это делается в табл. фильтр. возможно ты создал петлю и только указание конкретной подсети позволяет роутеру разрулить ситуацию.

vxzvxz ★★★ ()
Ответ на: комментарий от vxzvxz

А кто говорит про фильтрацию и ограничения? Но если, к примеру, у нас есть 2 сети, 192.168.0.0/24 и 192.168.1.0/24 и мы хотим, чтобы только первая подвергалась SNAT, то ключи -s тут необходим, кроме того, если сами разработчики добавили возможность указывать в правиле для таблицы nat как source, так и destination, то я думаю это вполне нормально использовать их.

firstcalled ()
Ответ на: комментарий от vxzvxz

Угу, форум вроде бы серьезный, а все еще полно таких, как Вы, бла-бла-бла не по теме и классика русского интернете «Вы ничего не знаете, а я в белом!». Прошу не оффтопить, нечего сказать - молчите.

firstcalled ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.