Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: mavar в Nov 13, 2007, 19:37



Титла: Vtun ethernet тунел
Публикувано от: mavar в Nov 13, 2007, 19:37
Здравейте,

Искам да направя ethernet тунел между два хоста в интернет. Единият е с ядро 2.6.22.3 , а другия е с ядро 2.4.31. И двата хоста имат компилиран като модул TAP/TUN - драйвер, а също инсталиран vtund. Също така двата хоста се свързват към интернет чрез PPPoE и имат реални IP-та.
Този с 2.4.31 го конфигурирам като сървър:

# cat /etc/vtund.conf
options {
        type stand;
        port 5000;
        timeout 30;
        ifconfig /sbin/ifconfig;
        route /sbin/route;
        ip /sbin/ip;
        }
default {
   compress no;
   speed 0;
   }
lion   {
   passwd XXXXX;
 type ether;
   device tap0;
   proto udp;
 compress no;
   encrypt no;
   stat no;
   keepalive yes;
   up {
      ifconfig "%% 10.1.5.200 netmask 255.255.248.0";
      route "add -net 10.0.0.0 netmask 255.0.0.0 gw 10.1.0.2";
      };
   down {
      ifconfig "%% down";
        };
   }

Стартирам го с:

#vtund -s -f /etc/vtund.conf

Съответно другия хост е конфигуриран така:

# cat /etc/vtund.conf
options {
   type stand;
   port 5000;
   timeout 30;
   ifconfig /sbin/ifconfig;
   route /sbin/route;
   ip /sbin/ip;
   }
default {
   compress no;
   speed 0;
   }
lion   {
   passwd XXXXX;
   type ether;
   device tap0;
   proto udp;
   compress no;
   encrypt no;
   stat no;
   keepalive yes;
   up    {
      ifconfig "%% 10.1.5.200 netmask 255.255.248.0";
      route "add -net 10.1.0.0 netmask 255.255.248.0 gw 10.1.0.2";
      };
   down   {
      ifconfig "%% down";
      };
   }

... и го стартирам с:

# vtund -f /etc/vtund.conf lion host.ispprovider.bg

И на двата хоста се вдига интерфейс tap0 със съответстващото му IP от vtund.conf, също така 'netstat -nau' показва наличието на ESTABLISHED connection на порт 5000 по udp, но не мога да прекарам нищо по канала. Нямам пинг до хостовете от другата мрежа, в ARP-кеша няма нищо, което да се отнася за tap0.
Някой може ли да помогне? Крайната ми цел е да мога да се логна към AC-то на отсрещната мрежа, но на първо време искам да виждам другата мрежа през тунела.


Титла: Vtun ethernet тунел
Публикувано от: gat3way в Nov 13, 2007, 20:54
Якооо....ip-over-ethernet-over-ip-over-ethernet...бахти, какъв е смисъла от такива работи...представям си едни прости arp заявки с какъв overhead идват :) Съжалявам за грубата намеса де :)


Титла: Vtun ethernet тунел
Публикувано от: Йордан в Nov 14, 2007, 11:13
Ти хубаво си вдигаш интерфейса, но на къде се рутират пакетите?

route -n
tracepath IP-на-другата-машина

Това са според мен двете команди, които биха ти помогнали


Титла: Vtun ethernet тунел
Публикувано от: mavar в Nov 14, 2007, 12:14
Ако погледнеш конфигурационния файл ще видиш накъде се рутират. След като се вдига интерфейс, би трябвало хостовете от същата мрежа да са директно достъпни без да минават през GW. Поне като се логна на другата машина през ssh и пусна пинг към някой от хостовете те се появяват в ARP-кеша на tap0, но през тунела това не се случва.

Други идеи?


Титла: Vtun ethernet тунел
Публикувано от: p3tzata_ в Nov 14, 2007, 17:26
Други идеи -OpenVPN





Титла: Vtun ethernet тунел
Публикувано от: gat3way в Nov 14, 2007, 19:49
Да, аз имам идея, няколко идеи де. Просто конфигурациите са грешни. Покрай това, също така това не е достатъчно.

И причината е, че според мен не си разбрал идеята на нещата.

И сега според мен - най-простият случай, в който на двата endpoint-a на тунела не се задават адреси на tap интерфейсите и нещата се решават с бриджинг. Така наистина ще имаш "прозрачно" свързване на двете мрежи, без да се тормозиш с рутиране и задаване на частни адреси на двете страни на тунела.

Първо като гледам, вдигаш един и същ адрес на 2-та tap интерфейса, а това не се прави така. Командата за вдигане на тунела (в случаят) е нещо от сорта на

ifconfig %% up

само това си стига.

Оттам нататък всичко, което остава е да си направиш по един bridge интерфейс на двете машини, като бридж-ваш tap0 интерфейса и етернет интерфейса във "вътрешния ЛАН". Това става лесно с brctl, дори е препоръчително бридж-а да го вдигаш заедно с тунела. Нямаш си идея колко по-лесно става така.

ЕДИТ: щях да забравя, трябва в случаят да вдигнеш на br0 интерфейса от двете страни някакъв адрес в един и същ събнет, разбира се..иначе опитът ще пропадне :)

И другият вариант: вдигаш point-to-point tap интерфейса, с по един "remote" и един "local" адрес и слагаш по един маршрут до нужните събнети през point-to-point интерфейса. Така обаче реално двете страни не са ти в един събнет, а имаш 2 събнета и рутиране. И това за по-големи събнети е всъщност идейно, защото ще си спестиш поне много безсмислен broadcast трафик от сорта на АРП запитванки. Разбира се, в този случай точно етернет тунел е глупава идея заради overhead-a, но пак става в крайна сметка, поне имаш някаква автентикация от страна на vtun.

Апропо, в твоят случай очевидно си се опитвал да правиш нещо подобно...ама си виж маските и познай всичко за remote мрежата откъде ще се опита да излезе...ммм отникъде (всъщност не, вероятно ще се пробва през интерфейса, който знае за твоя default gw..предполагам). Много логично е дори ARP entries да нямаш за tap интерфейса, ядрото грам си няма идея, че трябва да се пробва през този интерфейс да ти изкарва ARP request-ите. Между другото, с tcpdump може да се разбере :)

И...понякога четенето е по-добра идея от следването на разни guides и пригаждането им за твоите си цели, без да се обиждаш де :)