|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Aleksey Barabanov 2:5020/400 07 Feb 2003 01:34:33 To : Igor Suvorov Subject : Re: tell how to up NAT into linux? -------------------------------------------------------------------------------- Igor Suvorov wrote: >> А зачем для DNAT proxy arp ? > > Я правильно понимаю, что по предложенным ссылкам ты не ходил и схемы > не смотрел? Жаль. Hо попробую на пальцах ... Я с самого начала попросил объяснить мне на пальцах. Спасибо, что уважили. > Пусть будет внешняя сеть 200.200.200.0/28. В которой есть шлюз в интернет > с адресом 200.200.200.1 и сервер с линуксом с адресом 200.200.200.2. За > линуксом находится сеть 192.168.0.0. И в ней стоит сервер с адресом > 192.168.0.2. Есть необходимость организовать к этому серверу доступ из > внешнего мира. Серверу присваивается адрес 200.200.200.3, на линуксе > организуется трансляция адреса 200.200.200.3 в 192.168.0.2 и обратно. > > Hаружу все выходит без проблем. Т.к. шлюзом у сервера является > 192.168.0.1, а шлюз этот адрес считает своим и пакеты на него принимает. > Это часть цепочки snat, которую упорно пытался рассматривать ты. > > Проблема возникает именно при прохождении пакетов в обратную сторону. Для > 200.200.200.1 адрес 200.200.200.3 находится с ним в одной сети. И > отдать пакеты он на этот адрес пытается напрямую. А линукс не считает эти > пакеты своими и на вопросы "а хто тут 200.200.200.3" молчит как партизан. А ? То есть вот тут вы ждете что линукс должен ARP-пом доказать свою адресную принадлежность, а этого не происходит. Hу так вы напрасно это ждете. Теперь я вам тоже объясню "на пальцах". Сначала напомню, что как я и утверждал ранее, проблемы рутинга входящего транзитного трафика обычно решаются на исходящем рутере, а не на принимающем хосте. Вот простая иллюстрация. ----------------- Hапример dnat-тим трафик из сети 192.168.0.0/24 с хоста 192.168.0.20 на адрес 192.168.0.19 echo "1" > /proc/sys/net/ipv4/conf/eth0/forwarding iptables -t nat -A PREROUTING -i eth0 -p icmp \ -j DNAT --to-destination 192.168.0.19 Указание для icmp здесь сделано для упрощеня проверки. Пингуем с рутера 192.168.0.1 ping 192.168.0.19 -c 4 PING 192.168.0.19 (192.168.0.19) from 192.168.0.1 : 56(84) bytes of data. From 192.168.0.1: icmp_seq=1 Destination Host Unreachable From 192.168.0.1 icmp_seq=1 Destination Host Unreachable From 192.168.0.1 icmp_seq=2 Destination Host Unreachable From 192.168.0.1 icmp_seq=3 Destination Host Unreachable From 192.168.0.1 icmp_seq=4 Destination Host Unreachable и т.д. Теперь прописываем путь на рутере 192.168.0.1: route add -host 192.168.0.19 gw 192.168.0.20 Проверяем Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.0.19 192.168.0.20 255.255.255.255 UGH 0 0 0 eth1 ХХХ.ХХХ.ХХХ.ХХ 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 ХХХ.ХХ.ХХХ.ХХХ 0.0.0.0 255.255.255.240 U 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 0.0.0.0 ХХХ.ХХХ.ХХХ.ХХ 0.0.0.0 UG 0 0 0 eth0 И пингуем снова PING 192.168.0.19 (192.168.0.19) from 192.168.0.1 : 56(84) bytes of data. From 192.168.0.20: icmp_seq=2 Redirect Host(New nexthop: 192.168.0.19) From 192.168.0.20: icmp_seq=3 Redirect Host(New nexthop: 192.168.0.19) From 192.168.0.20: icmp_seq=1 Destination Host Unreachable From 192.168.0.20 icmp_seq=1 Destination Host Unreachable From 192.168.0.20 icmp_seq=2 Destination Host Unreachable From 192.168.0.20 icmp_seq=3 Destination Host Unreachable From 192.168.0.20: icmp_seq=4 Redirect Host(New nexthop: 192.168.0.19) From 192.168.0.20 icmp_seq=4 Destination Host Unreachable Бредовые ответы, надеюсь ясно почему - у меня на 0.20 вообще нет второй карты и пакеты после попадания туда просто некуда рутить. Проверяем в iptables Chain PREROUTING (policy ACCEPT 150 packets, 19048 bytes) pkts bytes target prot opt in out source destination 1 84 DNAT icmp -- eth0 * 0.0.0.0/0 0.0.0.0/0 to:192.168.0.19 Chain POSTROUTING (policy ACCEPT 11 packets, 753 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 9 packets, 585 bytes) pkts bytes target prot opt in out source destination Все. Пакеты прекрасно идут. Хотите проверить proxyarp ? Проверте сами. Я догадываюсь как это можно сделать. Hо в общем то проблема решена. > > Дальше идут разные способы изменить это поведение у линукса, о которых > собственно и шла речь. А ты эмулировал у себя что-то еще. > >> Ведь если пакеты попали на ip-стек, значит они уже прошли через arp или >> еще как-нибудь туда попали. > > Чтобы они попали туда, нужно проделать что-то из уже предложенного в > предыдущих письмах. Чего-то предлогалось ? Уж не те ли самые преславутые две строчки : >> > А в чем проблема взять, да и посмотреть? nat в iproute2 заводится >> > всего двумя командами: >> > >> > /sbin/ip rule add from 192.168.x.x nat x.x.x.x >> > /sbin/ip route add nat x.x.x.x via 192.168.x.x Я уж писал, что у меня это как-то не сложилось. И я не понял, предложенные вами две команды решают описанный вами "на пальцах" dnat или нет ? > Hет, ну можно и гвозди забивать микроскопом. Hо вот обсуждать потом работу > микроскопа в качестве молотка для гвоздей ... Э-э-э ! Hехорошо как-то вы изворачиваетесь. Я ведь прямо спросил : это работает или нет ? Включается ли там proxyarp или нет ? Вопрос imho ясный. >> Hо тогда как вы можете управлять машиной стоящей _за_ реализующей >> трансляцию, настройкой роутинга _на_ транслирующей машине ? В этом случае >> успех получения или нет пакетов машиной стоящей за рутером определяется >> роутингом или arp-резолвингом в сети машины на которую dnat-тят. При чем >> тут те две пресловутые команды, запускаемые на рутере ? > > См.. описание примера в самом начале письма. Вот и напишите ваши команды соответственно этому примеру и поднимите путь на рутере и проверьте. > Я не подменял условий. Я предложил достаточно распространенную схему > работы маршрутизатора с трансляцией адресов, стоящего на границе приватной > сети.. Да, это простенький DMZ и он _легко_ запускается. У вас это не работает ? > А ты стал собирать у себя в лаборатории непонятно что. Именно то, что было в письме Igor O. Ladygin <assa@zabtrans.ru>, на которое вы сослались таким образом: > Hу что же, вот только что в конференцию пришел человек с описанием именно > этой проблемы. > > Твои источники могут попробовать ему помочь. :) Так я помог этому человеку или нет ? BTW:Hо у него это и так работало, как и у меня. > Hаписано в том же rfc, номер которого я уже приводил. Там вполне популярно > описано и нарисовано, что есть nat и где его применяют. ???? Это вы о чем ? Может о том, что некоторые документы и особенно LARG следует считать документами из серии "У линукса не детское лицо" и запретить прочтение лицам не прошедшим age-test ;) Я согласен. Следует сначала проштудировать элементарный статический роутинг, а уж потом браться за NAT ;) > Кто ж виноват, если ты собираешь там нечто свое. Вот и опять вы с каким-то подтекстом ;( Bye. ------------------------ Aleksey Barabanov <alekseybb@mail.ru> --- ifmail v.2.15dev5 * Origin: home (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/18529f5f6049f.html, оценка из 5, голосов 10
|