Удалось успешно поставить дрова для ADSL модема DSL-200 b1 на FreeBSD 6.0 amd64. Думаю что на i386 тоже все поставится без проблем. Провайдер WebPlus, режим инкапсуляции LLC_RFC1483_ROUTED_IP.
Опишу последовательность действий необходимую для успешной установки драйверов:
1. Качаем сорцы eciadsl-usermode-bsd-0.11.beta2.tar.bz2
2. Распаковываем
3. Читаем README-BSD, ставим пакеты необходимые для сборки, создаем ссылки как написано.
4. Открываем текстовым редактором файл eciadsl-pppoeci.c, Ищем в нем функцию tap_open, вид у нее такой:
int tap_open(char* dev, int tun)
{
int fd;
#if defined(__linux__)
struct ifreq ifr;
int err;
if ((fd = open("/dev/net/tun", O_RDWR | O_SYNC)) < 0)
return(-1);
memset(&ifr, 0, sizeof(ifr));
if (tun)
ifr.ifr_flags = IFF_TUN | IFF_NO_PI;
else
ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
if (*dev)
strncpy(ifr.ifr_name, dev, IFNAMSIZ);
if ((err = ioctl(fd, TUNSETIFF, (void*) &ifr)) < 0)
{
close(fd);
return(err);
}
strcpy(dev, ifr.ifr_name);
#else
if ((fd = open("/dev/tap0", O_RDWR | O_SYNC)) < 0)
return(-1);
strcpy(dev, "/dev/tap0");
#endif
return(fd);
}
Я поменял ее на такую:
int tap_open(char* dev, int tun)
{
int fd;
if ((fd = open("/dev/tun0", O_RDWR | O_SYNC)) < 0)
return(-1);
strcpy(dev, "/dev/tun0");
return(fd);
}
те просто вместо устройства tap0 процесс eciadsl-pppoeci будет открывать устройство tun0 (убрал все, что относиться к Linux, для простоты).
5. Компилируем и инсталлируем, как написано в README-BSD
6. Конфигурируем (запускаем eciadsl-config-text), получаем файл /etc/eciadsl/eciadsl.conf
7. Запускаем eciadsl-synch. Я для синхронизации модема использую файл gs7470_synch06.bin. Процесс синхронизации проходит успешно, лампочка на модеме загорается, однако при сам процесс при освобождении ресурсов завершается некорректно (оставляет после себя файл в текущей директории eciadsl-synch.core). Ну на данном этап на это можно положить...
8. Запускаем eciadsl-pppoeci. При этом создается устройство tun0, а не tap0, как было раньше.
9. Присваиваем адрес сетевому интерфейсу tun0 командой: ifconfig tun0 IP ROUTE. где IP - адрес выданный Вам провайдером, ROUTE - адрес шлюза по умолчанию. После выполнения этой команды создается тунель между вашим хостом и роутером провайдера.
10. Добавляем маршрут по умолчанию командой: route add default ROUTE, где ROUTE - адрес шлюза по умолчания.
11. Проверяем работу сети, пропинговав какой-либо внешний узел. У меня после запуска ping в первый раз происходит небольшая задержка (~5 сек).
Всем успехов, если что-то не получилось пишите на почту, постараюсь ответить.
|