Главная страница


ru.unix.bsd

 
 - RU.UNIX.BSD ------------------------------------------------------------------
 From : Alexander Burylov                    2:5054/75.1    25 Oct 2004  22:21:49
 To : All
 Subject : Warning: iface add: ioctl(SIOCAIFADDR...
 -------------------------------------------------------------------------------- 
 
 
 Столкнулся тут с пpоблемой...
 Есть сеть, для доступа в инет стоит сервер, на нём pppoed+ppp+самописная
 биллинговая система. Юзерам выдаются карточки, причём все карточки разделены на 
 два диапазона по выдаваемым IP адресам - для ограничения по ширине пропускания.
 
 Локальная сеть: 192.168.1.0/255.255.255.0
 Адрес сервера: 192.168.1.1
 PPPoE сеть 192.168.255.0/255.255.255.0
 
 Полностью приводить конфиги не буду, вот только то, что относится к делу:
 
 ppp.conf:
 set ifaddr 192.168.255.1 192.168.255.30-192.168.255.249
 
 ppp.secret:
 user1   pass1   *
 user2   pass2   192.168.255.2-192.168.255.29
 
 Т.е в данном случае имеем:
 user1 получает адрес из диапазона 192.168.255.30-192.168.255.249
 user2 получает адрес из диапазона 192.168.255.2-192.168.255.29
 
 В конце концов через трубы и очереди эти два юзера имеют разные ограничения на
 ширину пропускания канала. Для этого всё и задумывалось. Hо дело не в этом.
 
 В логах постоянно появляются варнинги типа:
 
 Oct 22 12:41:27 inet ppp[3068]: tun2: Warning: iface add: ioctl(SIOCAIFADDR,
 192.168.1.1 -> 192.168.255.30): File exists
 
 Смотрим логи ppp:
 
 Соединяется user1:
 Phase: Using interface: tun1
 Phase: deflink: Created in closed state
 tun1: Command: pppoe-server: set speed sync
 tun1: Command: pppoe-server: set server /var/run/ppp/tun%d-pppoe ******** 0177
 tun1: Phase: Listening at local socket /var/run/ppp/tun1-pppoe.
 tun1: Command: pppoe-server: enable pap passwdauth
 tun1: Command: pppoe-server: disable acfcomp protocomp
 tun1: Command: pppoe-server: deny acfcomp protocomp
 tun1: Command: pppoe-server: disable vjcomp deflate pred1 mppe
 tun1: Command: pppoe-server: deny vjcomp deflate pred1 mppe
 tun1: Command: pppoe-server: set mru 1492
 tun1: Command: pppoe-server: set timeout 3600
 tun1: Command: pppoe-server: set ifaddr 192.168.255.1
 192.168.255.30-192.168.255.249
 tun1: ID0: 10 = socket(2, 2, 0)
 tun1: ID0: 0 = ioctl(10, 2151704858, 0xbfbfdb70)
 tun1: IPCP: Selected IP address 192.168.255.30
 [...skipped...] Тут проверка паролей и тд.
 tun1: IPCP: deflink: SendConfigAck(7) state = Ack-Rcvd
 tun1: IPCP:  IPADDR[6] 192.168.255.30
 tun1: IPCP:  PRIDNS[6] 192.168.255.250
 tun1: IPCP:  SECDNS[6] 255.255.255.255
 tun1: IPCP: deflink: State change Ack-Rcvd --> Opened
 tun1: IPCP: deflink: LayerUp.
 tun1: IPCP: myaddr 192.168.255.1 hisaddr = 192.168.255.30
 tun1: ID0: 1 = socket(2, 2, 0)
 tun1: ID0: 1 = socket(2, 2, 0)
 tun1: ID0: 0 = ioctl(1, 3223349521, 0xbfbfe020)
 tun1: ID0: 0 = ioctl(1, 2149607696, 0xbfbfe020)
 tun1: ID0: 0x2830f220 = fopen("/etc/ppp/ppp.linkup", "r")
 tun1: ID0: 0x2830f220 = fopen("/etc/ppp/ppp.linkup", "r")
 tun1: ID0: 0 = ioctl(6, 2148037723, 0xbfbfe090)
 tun1: ID0: 1 = socket(17, 3, 0)
 tun1: ID0: 124 = write(1, data, 124)
 Тут всё нормально: при соединении ppp выбрал начальный адрес 192.168.255.30, в
 процессе IPCP переговоров user1 с этим согласился и ему назначился именно этот
 адрес.
 
 Сразу после этого соединяется user2:
 Phase: Using interface: tun2
 Phase: deflink: Created in closed state
 tun2: Command: pppoe-server: set speed sync
 tun2: Command: pppoe-server: set server /var/run/ppp/tun%d-pppoe ******** 0177
 tun2: Phase: Listening at local socket /var/run/ppp/tun2-pppoe.
 tun2: Command: pppoe-server: enable pap passwdauth
 tun2: Command: pppoe-server: disable acfcomp protocomp
 tun2: Command: pppoe-server: deny acfcomp protocomp
 tun2: Command: pppoe-server: disable vjcomp deflate pred1 mppe
 tun2: Command: pppoe-server: deny vjcomp deflate pred1 mppe
 tun2: Command: pppoe-server: set mru 1492
 tun2: Command: pppoe-server: set timeout 3600
 tun2: Command: pppoe-server: set ifaddr 192.168.255.1
 192.168.255.30-192.168.255.249
 tun2: ID0: 10 = socket(2, 2, 0)
 tun2: ID0: -1 = ioctl(10, 2151704858, 0xbfbfdb70)
 ^^^^^^^^^^^^^^^^^^^^^--какОго хрена спрашивается
 
 tun2: Warning: iface add: ioctl(SIOCAIFADDR, 192.168.1.1 -> 192.168.255.30):
 File exists
 ^^^^^^^^^^^^^^^^^^^^^--ppp выбрал тот же адрес
 
 tun2: ID0: 10 = socket(2, 2, 0)
 tun2: ID0: 0 = ioctl(10, 2151704858, 0xbfbfdb70)
 tun2: IPCP: Selected IP address 192.168.255.113
 [...skipped...]
 В конце концов user2 получит адрес совсем из другого диапазона, который указан в
 ppp.secret
 
 В процессе соединения с использованием динамических адресов ppp два раза
 изменяет адрес ифейса и таблицу маршрутизации: (можно посмотреть по route
 monitor)
 1 - когда он случайным образом выбрал адрес из диапазона адресов;
 2 - после проведения IPCP переговоров (адрес может быть выдан совсем из другого 
 диапазона)
 
 Во втором случае - всё нормально, ppp не выдаёт адреса, которые уже выданы.
 А вот в первом случае - ppp случайным образом выбирает адрес и сразу (ещё IPCP
 переговоры даже не проведены) пытается создать ифейс и изменить таблицу
 роутинга.
 
 Допустим диапазон из 20 адресов, чем больше подключается клиентов (понятно, что 
 максимум 20) тем больше вероятность, что ppp случайным образом выберет
 существующий адрес, после того как он обломится - он выберет другой адрес.
 
 Это что так и должно быть? или я чего не так делаю? Получается, что messages
 завален одними этими варнингами. Как ему сказать, чтоб не надо так делать, не
 надо создавать ифейс с существующим адресом и лезти в таблицу роутинга до того, 
 как пройдут IPCP переговоры и уже будет конкретная договорённость с адресами?
 
 PS: Из практики - чем больше юзеров подключено - тем больше варнингов можно
 увидеть.
 
    До свидания, Alexander.
 
 --- GoldED+/W32 1.1.5-30228
  * Origin: Homenet Gate (2:5054/75.1)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Warning: iface add: ioctl(SIOCAIFADDR...   Alexander Burylov   25 Oct 2004 22:21:49 
Архивное /ru.unix.bsd/2775417d2835.html, оценка 3 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional