там есть тестовый: corbina / corbina
Printable View
Немного отвлеченно ....
А есть ли резон юзать САБЖ в Петербурге например ???
Ощутил ли кто разницу при использовании оного напрямую с ПК , например ???? :)
Code:--- sync-pppd.c.org 2007-03-29 00:57:45.000000000 +0400
+++ sync-pppd.c 2007-03-28 02:59:52.000000000 +0400
@@ -183,7 +183,7 @@
sl->event = NULL;
/* Re-establish session if desired */
- if (may_reestablish && tunnel->peer->persist && tunnel->peer->fail < tunnel->peer->maxfail) {
+ if (may_reestablish && tunnel->peer->persist && (tunnel->peer->maxfail == 0 || tunnel->peer->fail < tunnel->peer->maxfail)) {
struct timeval t;
t.tv_sec = tunnel->peer->holdoff;
--- peer.c.org 2007-03-29 00:58:14.000000000 +0400
+++ peer.c 2007-03-28 03:00:01.000000000 +0400
@@ -242,6 +305,7 @@
memset(&prototype, 0, sizeof(prototype));
prototype.mask_bits = 32;
prototype.validate_peer_ip = 1;
+ prototype.persist = 1;
port = 1701;
return 0;
}
По поводу патча.
1) В конфиг файле maxfail указывается как 32767, так что добавление анлима для maxfail 0 необязательно. Разве в конфиге этого не было?
2) Что касается perist: опять же в конфиг файле в секции peer есть опция persist yes - действовать она должна аналогично присваиванию 1. Это не работает?
Я что-то просмотрел?
Ко всем:
Вот что надо:
(по мотивам http://wl500g.info/showpost.php?p=24781&postcount=3 )
убить l2tpd, pppd
ПотомCode:killall l2tpd
killall pppd
После этого посматривать на файл /tmp/nohup.out, там должна сыпаться отладочная информация от l2tpd.Code:cd /tmp
nohup l2tpd -d 127 -f &
l2tp-control "start-session <heartbeat>"
Когда оно отвалится и не переконнектится, этот файлик запостить здесь.
Да, <heartbeat> заменить на Heartbeat Server.
По ссылке прошивка с патчем? Она должна резолвить имя сервера?
К сожалению на Deluxe проверить не могу - поменял роутер на Premium. Причем проблема с неконнектом ушла сама собой, видимо на Premium этого глюка нет.
Нет, поясню: в тех постах только объяснение, как произодить отладку. Прошивку ту шить не нужно, делается всё с текущей.
какая прошивка подойдет ? у меня 500gp :D
Текущая, которая у Вас прошита.
1.9.2.7-7f
вот эта и залита ..... не коннектиться (((
по pptp все ок ...:rolleyes:
Не коннектится - проверяйте настройки. Или спросите у тех, у кого коннектится.
ок - приятно с Вами работать ( без иронии )
Сорри за глупый вопрос
здесь вместо heartbeat пишем, в случае с Корбиной l2tp.corbina.net?Code:cd /tmp
nohup l2tpd -d 127 -f &
l2tp-control "start-session <heartbeat>"
т.е.
так.Code:cd /tmp
nohup l2tpd -d 127 -f &
l2tp-control "start-session l2tp.corbina.net"
Ну да, наверное. Оно с l2tp.corbina.net работает в обычных условиях?
Подтверждаю слова предыдущего оратора, прописал ручками IP l2tp и все работает на ура уже 2-е сутки. Все стабильно и хорошо, пока что :D
Павел Суходольский был настолько настойчив, что поймал дисконнект с включенным логом. Итог такой: у Корбины дох L2TP сервер (видимо теперь он делает это редко), так что l2tp демон не мог приконнектится и после этого прекращал попытки.
Так или иначе, я поправил это место. :)
Для тестирования есть новая прошивка: 1.9.2.7-8-pre2, лежит тут: http://oleg.wl500g.info/500w/
Обращаю внимание, что драйвера для WiFi там самые свежие, из исходников WL500W, поэтому надеюсь, что станет лучше с некоторыми проблемами.
Ещё там теперь автоматически добавляется маршрут до l2tp сервера, надеюсь, что теперь заработает символьное имя l2tp.corbina.net.
Прошил, с символьным именем не работает, только с ip как и раньше.
Далее wifi вообще как бы умер, т.е. клиент(один ноут с intel 2200BG) вообще не конектится. Может надо, из-за обновленых драйверов, настройки в дефолт сбрасывать?
Залил обратно 1.9.2.7-7g WiFi заработал сразу. В чем тут дело?
Я не сбрасывал. У меня WiFi работает нормально. Правда у меня и не Интел. Попробуйте поиграться с настройками WiFi, может что-нибудь найдёте.
Я надеялся, что в этих новые драйверах броадком смог обойти интеловские проблемы, но похоже, что нет... Надо пробовать разные настройки для шифрования, чтобы понять, в чём проблема...
Так или иначе, проблему надо решать, ибо 1.9.2.7-8 выйдет именно с этой линейкой WiFi драйвера. Назад я уже не пойду.
Залил оную прошивку - проблем вай фаем никаких
но 2l так и не запустилось - нет конеекта ни циферками ни буковками :-(
одно НО шифрование у меня не включено ( по своим причинам) , только контроль МАКадреса
Просьба к владельцем карт от интелла.
Попробуйте вбить вот эти команды в телнете
После перезагрузки, надеюсь, Ваши карты смогут жить с 1.9.2.7-8-preCode:nvram set wl0_reg_mode=off
nvram commit
reboot
Пробуйте, это важно.
А мой патч про резолвинг не пригодился ? С ним у меня l2tp.corbina.net прекрасно работает ;)
Code:diff -r -u -w H:\wl500g\prog\tp-l2tp.bak/handlers/cmd.c H:\wl500g\prog\rp-l2tp/handlers/cmd.c
--- H:\wl500g\prog\tp-l2tp.bak/handlers/cmd.c Thu Jul 1 04:00:00 2004
+++ H:\wl500g\prog\rp-l2tp/handlers/cmd.c Wed Mar 28 02:14:24 2007
@@ -340,7 +340,7 @@
return;
}
memcpy(&haddr.sin_addr, he->h_addr, sizeof(haddr.sin_addr));
- p = l2tp_peer_find(&haddr, NULL);
+ p = l2tp_peer_find(&haddr, NULL, 1);
if (!p) {
cmd_reply(es, fd, "ERR Unknown peer");
return;
diff -r -u -w H:\wl500g\prog\tp-l2tp.bak/l2tp.h H:\wl500g\prog\rp-l2tp/l2tp.h
--- H:\wl500g\prog\tp-l2tp.bak/l2tp.h Thu Jul 1 04:00:00 2004
+++ H:\wl500g\prog\rp-l2tp/l2tp.h Wed Mar 28 01:52:26 2007
@@ -75,6 +75,8 @@
typedef struct l2tp_peer_t {
hash_bucket hash; /* all_peers hash (hashed by address) */
struct sockaddr_in addr; /* Peer's address */
+ char addrname[MAX_HOSTNAME]; /* Peer's name address */
+ size_t addrname_len; /* Length of peer's name address */
int mask_bits; /* Peer's netmask in number of bits */
char hostname[MAX_HOSTNAME]; /* My hostname as presented to this peer. */
size_t hostname_len; /* Length of my hostname */
@@ -453,7 +458,7 @@
/* peer.c */
void l2tp_peer_init(void);
-l2tp_peer *l2tp_peer_find(struct sockaddr_in *addr, char const *hostname);
+l2tp_peer *l2tp_peer_find(struct sockaddr_in *addr, char const *hostname, int createnew);
l2tp_peer *l2tp_peer_insert(struct sockaddr_in *addr);
/* debug.c */
Binary files H:\wl500g\prog\tp-l2tp.bak/l2tpd and H:\wl500g\prog\rp-l2tp/l2tpd differ
diff -r -u -w H:\wl500g\prog\tp-l2tp.bak/peer.c H:\wl500g\prog\rp-l2tp/peer.c
--- H:\wl500g\prog\tp-l2tp.bak/peer.c Thu Jul 1 04:00:00 2004
+++ H:\wl500g\prog\rp-l2tp/peer.c Wed Mar 28 02:59:18 2007
@@ -19,6 +19,8 @@
#include "l2tp.h"
#include <stddef.h>
#include <string.h>
+#include <errno.h>
+#include <netdb.h>
static hash_table all_peers;
static int peer_process_option(EventSelector *es,
@@ -34,6 +36,7 @@
static int port;
static int handle_secret_option(EventSelector *es, l2tp_opt_descriptor *desc, char const *value);
+static int handle_addrname_option(EventSelector *es, l2tp_opt_descriptor *desc, char const *value);
static int handle_hostname_option(EventSelector *es, l2tp_opt_descriptor *desc, char const *value);
static int handle_peername_option(EventSelector *es, l2tp_opt_descriptor *desc, char const *value);
static int set_lac_handler(EventSelector *es, l2tp_opt_descriptor *desc, char const *value);
@@ -44,7 +47,8 @@
/* Peer options */
static l2tp_opt_descriptor peer_opts[] = {
/* name type addr */
- { "peer", OPT_TYPE_IPADDR, &prototype.addr.sin_addr.s_addr},
+/* { "peer", OPT_TYPE_IPADDR, &prototype.addr.sin_addr.s_addr}, */
+ { "peer", OPT_TYPE_CALLFUNC, (void *) handle_addrname_option},
{ "mask", OPT_TYPE_INT, &prototype.mask_bits},
{ "secret", OPT_TYPE_CALLFUNC, (void *) handle_secret_option},
{ "hostname", OPT_TYPE_CALLFUNC, (void *) handle_hostname_option},
@@ -136,6 +140,43 @@
}
/**********************************************************************
+* %FUNCTION: handle_addrname_option
+* %ARGUMENTS:
+* es -- event selector
+* desc -- descriptor
+* value -- the address name of peer
+* %RETURNS:
+* 0
+* %DESCRIPTION:
+* Copies address name to prototype and resolves if possible
+***********************************************************************/
+static int
+handle_addrname_option(EventSelector *es,
+ l2tp_opt_descriptor *desc,
+ char const *value)
+{
+ struct hostent *he;
+
+ strncpy(prototype.addrname, value, MAX_HOSTNAME);
+ prototype.addrname[MAX_HOSTNAME-1] = 0;
+ prototype.addrname_len = strlen(prototype.addrname);
+
+ he = gethostbyname(value);
+ if (!he)
+ {
+ l2tp_set_errmsg("Could not resolve %s as IP address: %s",
+ value, strerror(errno));
+ prototype.addr.sin_addr.s_addr = 0xFFFFFFFF;
+ }
+ else
+ {
+ memcpy(&prototype.addr.sin_addr.s_addr, he->h_addr, sizeof(he->h_addr));
+ }
+
+ return 0;
+}
+
+/**********************************************************************
* %FUNCTION: handle_peername_option
* %ARGUMENTS:
* es -- event selector
@@ -219,6 +260,28 @@
return 0;
}
+static void peer_copy_from(l2tp_peer *peer, l2tp_peer *src)
+{
+ peer->mask_bits = src->mask_bits;
+ memcpy(&peer->hostname,&src->hostname, sizeof(src->hostname));
+ peer->hostname_len = src->hostname_len;
+ memcpy(&peer->peername,&src->peername, sizeof(src->peername));
+ peer->peername_len = src->peername_len;
+ memcpy(&peer->secret, &src->secret, MAX_SECRET_LEN);
+ peer->secret_len = src->secret_len;
+ peer->lns_ops = src->lns_ops;
+ memcpy(&peer->lns_options,&src->lns_options,sizeof(src->lns_options));
+ peer->lac_ops = src->lac_ops;
+ memcpy(&peer->lac_options,&src->lac_options,sizeof(src->lac_options));
+ peer->hide_avps = src->hide_avps;
+ peer->retain_tunnel = src->retain_tunnel;
+ peer->persist = src->persist;
+ peer->holdoff = src->holdoff;
+ peer->maxfail = src->maxfail;
+ peer->fail = 0;
+ peer->validate_peer_ip = src->validate_peer_ip;
+}
+
/**********************************************************************
* %FUNCTION: peer_process_option
* %ARGUMENTS:
@@ -267,24 +331,7 @@
peer = l2tp_peer_insert(&prototype.addr);
if (!peer) return -1;
- peer->mask_bits = prototype.mask_bits;
- memcpy(&peer->hostname,&prototype.hostname, sizeof(prototype.hostname));
- peer->hostname_len = prototype.hostname_len;
- memcpy(&peer->peername,&prototype.peername, sizeof(prototype.peername));
- peer->peername_len = prototype.peername_len;
- memcpy(&peer->secret, &prototype.secret, MAX_SECRET_LEN);
- peer->secret_len = prototype.secret_len;
- peer->lns_ops = prototype.lns_ops;
- memcpy(&peer->lns_options,&prototype.lns_options,sizeof(prototype.lns_options));
- peer->lac_ops = prototype.lac_ops;
- memcpy(&peer->lac_options,&prototype.lac_options,sizeof(prototype.lac_options));
- peer->hide_avps = prototype.hide_avps;
- peer->retain_tunnel = prototype.retain_tunnel;
- peer->persist = prototype.persist;
- peer->holdoff = prototype.holdoff;
- peer->maxfail = prototype.maxfail;
- peer->fail = 0;
- peer->validate_peer_ip = prototype.validate_peer_ip;
+ peer_copy_from(peer, &prototype);
return 0;
}
@@ -345,17 +392,19 @@
* %ARGUMENTS:
* addr -- IP address of peer
* hostname -- AVP peer hostname
+* createnew -- 1 if create new peer if not found, 0 otherwise
* %RETURNS:
* A pointer to the peer with given IP address, or NULL if not found.
* %DESCRIPTION:
* Searches peer hash table for specified peer.
***********************************************************************/
l2tp_peer *
-l2tp_peer_find(struct sockaddr_in *addr, char const *peername)
+l2tp_peer_find(struct sockaddr_in *addr, char const *peername, int createnew)
{
void *cursor;
l2tp_peer *peer = NULL;
l2tp_peer *candidate = NULL;
+ l2tp_peer *template = NULL;
char addr1_str[16], addr2_str[16];
for (candidate = hash_start(&all_peers, &cursor);
@@ -371,6 +420,14 @@
addr1_str, addr2_str,
candidate->mask_bits));
+ if (createnew && (template == NULL || candidate->addr.sin_addr.s_addr == 0xFFFFFFFF))
+ {
+ template = candidate;
+ DBG(l2tp_db(DBG_TUNNEL, "l2tp_peer_find(%s) template set to %s/%d\n",
+ addr1_str, addr2_str,
+ candidate->mask_bits));
+ }
+
if ((candidate->addr.sin_addr.s_addr & mask) ==
(addr->sin_addr.s_addr & mask)
&& (!peername ||
@@ -393,6 +450,21 @@
addr1_str,
peer == NULL ? "NULL" : addr2_str,
peer == NULL ? -1 : peer->mask_bits));
+
+ if (peer == NULL && template != NULL)
+ {
+ memcpy(&prototype, template, sizeof(prototype));
+ prototype.addr.sin_addr.s_addr = addr->sin_addr.s_addr;
+ peer = l2tp_peer_insert(&prototype.addr);
+ peer_copy_from(peer, &prototype);
+
+ strcpy(addr2_str, inet_ntoa(peer->addr.sin_addr));
+
+ DBG(l2tp_db(DBG_TUNNEL, "l2tp_peer_find(%s) created from template %s/%d\n",
+ addr1_str,
+ addr2_str,
+ peer->mask_bits));
+ }
return peer;
}
diff -r -u -w H:\wl500g\prog\tp-l2tp.bak/tunnel.c H:\wl500g\prog\rp-l2tp/tunnel.c
--- H:\wl500g\prog\tp-l2tp.bak/tunnel.c Thu Jul 1 04:00:00 2004
+++ H:\wl500g\prog\rp-l2tp/tunnel.c Wed Mar 28 01:51:46 2007
@@ -1348,7 +1348,7 @@
l2tp_debug_tunnel_to_str(tunnel), tunnel->peer_hostname));
/* Find peer */
- tunnel->peer = l2tp_peer_find(&tunnel->peer_addr, tunnel->peer_hostname);
+ tunnel->peer = l2tp_peer_find(&tunnel->peer_addr, tunnel->peer_hostname, 0);
/* Get assigned tunnel ID */
val = l2tp_dgram_search_avp(dgram, tunnel, &mandatory, &hidden, &len,
ноут с intel 2200BG
КПК FS LOOX 720
1.9.2.7-7g WiFi работал
1.9.2.7-8-pre2 Wi-fi Отвалился
помогло. конект сразу востановился без лишних настроекCode:nvram set wl0_reg_mode=off
nvram commit
reboot
Прошивка WL500gp-1.9.2.7-8-pre6.trx, ноутбук с WiFi карточкой Intel 3945ABG. Сразу после перепрошивки, попытка подключиться к к роутеру по WiFi привела софт от Intel'a в ступор - загрузка процессора 1-2%, а в окошке управления WiFi висят песочные часы. Помог приведенный выше код.
Скорость на speedtest.net в среднем 8500 кбит/сек, максимум из шести замеров был 10400 кбит/сек (все это по WiFi через роутер, а по кабелю напрямую в комп и L2TP на нем - доходило до 24500 кбит/сек).
Мультикаст проходит, но иногда "квадратит" (по кабелю все чисто).
Обнаружил неприятный глюк - периодически отваливается WiFi подключение, на прошивке 1.9.2.7-7g такого не было.
В отсутствии этого патча к роутеру есть что-то хорошее: у меня 13-и летний сын при отваливании Интернета пингует l2tp.corbina.net, затем полученный IP вводит через WEB роутера, тем самым закрепляя хоть какие-то технические знания.
Ну а мне это совсем делать не хочется. Жду с нетерпением инкапсуляцию патча для резолвинга L2PT.
Отписал в Корбину и сюда в копию. Может кто поможет.
До сих пор не испытывал проблем при работе через L2TP (кроме постоянного ввода нового IP после обрыва VPN). Вчера обнаружил, что не могу зайти на сайты www.microsoft.com, windowsupdate.microsoft.com и update.microsoft.com (резолвятся они верно). При этом открываются другие сайты нормально. Даже office.microsoft.com открывается. Подключил к роутеру сотовый с Симбианом - аналогичная проблема. Подключил комп вместо роутера - проблем нет! Ничего такого на роутере, что могло бы послылать WWW творения Б.Гейтса в /dev/null я не нашёл.
Кто-нибудь сталкивался с подобным?
Нашёл pre9 http://oleg.wl500g.info/500w/
Помогло. Спасибо!
Существует список изменений этих прошивок.
Найденые, к примеру этот - http://wl500g.info/showthread.php?t=2704
не полные.
Интересен полный, чтобы изменения между pre были отражены.
Реально ли от него добиться скорости более 20Мбит/с? Прошит WL500gp-1.9.2.7-8-pre9, фаервол отключен, шифрование не используется, проброшены все порты через DMZ. Канал легко выдаёт 5-9МБ/с через стандартный L2TP-клиент Windows, но ни в торренте, ни iperf'ом, ни прямой скачкой не удавалось через Asus получить больше 20Мбит/с. Это его верхний потолок?