Custler

Скрипт полностью автоматического создания роутера для корбины на FreeBSD (Custler).

Рекомендованные сообщения

странная проблема возникла - если на внешнем интерфейсе включён DHCP и возникают потери пакетов на маршруте до VPN-сервера, mpd4 роняет тоннель и переподнимает его почему-то с использованием адреса с внутреннего интерфейса

естественно, никакого интернета при этом не получается

в логах ничего аномального нет

по совету техподдержки прописал статику на внешний интерфейс, помогло, но этимология проблемы осталась невыясненной, да и хотелось бы по-прежнему получать статические маршруты по DHCP вместе с адресом, несмотря на заверения сотрудников об их неизменности

 

UPD хехе, как обычно, стоило сказать, что всё хорошо, как тут же опять mpd4 ломанулся на VPN-сервер с внутренним адресом

так что дело не в статике

Изменено пользователем lennon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

lennon

Не очень понятно, с каким таким внутренним адресом может mpd4 ломанутся на VPN-сервер?

покажи хотябы ifconfig. ну и лог mpd.

 

Но проблема скорее всего в vpn сервере. Выбери, какой для тебя лучше всего работает, и пропиши его ip-шник вместо tp.corbina.net.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
lennon

Не очень понятно, с каким таким внутренним адресом может mpd4 ломанутся на VPN-сервер?

покажи хотябы ifconfig. ну и лог mpd.

 

вот и мне непонятно

обычно тоннель выглядит так

ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1460
	inet 89.178.146.39 --> 85.21.0.17 netmask 0xffffffff

после отваливания тоннеля и переподключения он превращается в примерно такое

ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1460
	inet 192.168.0.200 --> 85.21.0.17 netmask 0xffffffff

 

vpn.log выглядит при этом так

2009-08-30 23:59:53 -PPTP- pptpGW = 85.21.0.17 WAN-IP = 89.178.149.207/32

2009-08-31 00:05:21 -PPTP- pptpGW = 85.21.0.17 WAN-IP = 192.168.0.200/32

 

 

Но проблема скорее всего в vpn сервере. Выбери, какой для тебя лучше всего работает, и пропиши его ip-шник вместо tp.corbina.net.

да, на vpn-серверах наблюдается потеря пакетов 3-5%

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Установил скрипт все заработало:)

скрипт ;)

 

только у меня не получилось настроить порты для torrent/emule

дописал в pf.conf

 

rdr pass on {$ext_if $vpn_if} proto {tcp udp} from any to any port { 61123 60123 59123 } -> 192.168.0.155

но порты не открылись :huh:

может я не туда прописал ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Установил скрипт все заработало:)

скрипт :blush:

 

только у меня не получилось настроить порты для torrent/emule

дописал в pf.conf

 

rdr pass on {$ext_if $vpn_if} proto {tcp udp} from any to any port { 61123 60123 59123 } -> 192.168.0.155

но порты не открылись :)

может я не туда прописал ?

 

Эта строчка "разрешает" порты в файрволе. А вот "открывает" порты обычно софт. На роутере какое-нить ПО слушает порты 61123 и т.д.?

Если нужны порты на машине в сетке за роутером, то нужно их "пробросить".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Эта строчка "разрешает" порты в файрволе. А вот "открывает" порты обычно софт. На роутере какое-нить ПО слушает порты 61123 и т.д.?

Если нужны порты на машине в сетке за роутером, то нужно их "пробросить".

 

 

Вот как их пробросить меня и интересует )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Эта строчка "разрешает" порты в файрволе. А вот "открывает" порты обычно софт. На роутере какое-нить ПО слушает порты 61123 и т.д.?

Если нужны порты на машине в сетке за роутером, то нужно их "пробросить".

 

 

Вот как их пробросить меня и интересует )

 

Там, вроде, есть такая настройка. В конце первого поста темы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Эта строчка "разрешает" порты в файрволе. А вот "открывает" порты обычно софт. На роутере какое-нить ПО слушает порты 61123 и т.д.?

Если нужны порты на машине в сетке за роутером, то нужно их "пробросить".

 

 

Вот как их пробросить меня и интересует )

 

в pf.conf вставляем строчки типа

rdr pass on <имя интерфейса, здесь ng0> proto tcp from any to any port <номер порта снаружи> -> <IP машины, куда пробрасываем> port <номер порта внутри>

 

 

 

уважаемая администрация, а почему мне запрещено здесь писать от имени lennon? неужто написал что-то не то? так уведомите хотя бы

Изменено пользователем Lennon11

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
странная проблема возникла - если на внешнем интерфейсе включён DHCP и возникают потери пакетов на маршруте до VPN-сервера, mpd4 роняет тоннель и переподнимает его почему-то с использованием адреса с внутреннего интерфейса

естественно, никакого интернета при этом не получается

 

+1, та же фигня

 

Строчка из лога:

2009-09-16 04:18:44 -PPTP- pptpGW = 85.21.0.111 WAN-IP = 192.168.225.101/32

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
странная проблема возникла - если на внешнем интерфейсе включён DHCP и возникают потери пакетов на маршруте до VPN-сервера, mpd4 роняет тоннель и переподнимает его почему-то с использованием адреса с внутреннего интерфейса

естественно, никакого интернета при этом не получается

+1, та же фигня

 

Строчка из лога:

2009-09-16 04:18:44 -PPTP- pptpGW = 85.21.0.111 WAN-IP = 192.168.225.101/32

 

Ну DHCP клиент на внешнем интерфейсе не может быть не включен, иначе могут быть проблемы.

 

А вот кто подсовывает внешнему интерфейсу внутренний адрес?

Уж не запущенный ли на роутере DHCP сервер с неправильными настройками? Вроде больше некому.

Конфиг DHCP сервера в студию - будем посмотреть.

 

И запуск в rc.conf тоже должен быть правильным:

dhcpd_enable="YES"
dhcpd_ifaces="имя внутреннего интерфейса"
dhcpd_flags="-q"

Изменено пользователем Custler

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Ну DHCP клиент на внешнем интерфейсе не может быть не включен, иначе могут быть проблемы.

 

А вот кто подсовывает внешнему интерфейсу внутренний адрес?

Уж не запущенный ли на роутере DHCP сервер с неправильными настройками? Вроде больше некому.

Конфиг DHCP сервера в студию - будем посмотреть.

 

И запуск в rc.conf тоже должен быть правильным:

2009-08-29 06:50:56 -PPTP- pptpGW = 85.21.0.109 WAN-IP = 192.168.225.101/32
...
2009-09-07 22:06:36 -LAN-- LanGW = 10.59.40.1 LAN-IP = 10.59.40.108
2009-09-07 22:09:23 -PPTP- pptpGW = 85.21.0.123 WAN-IP = 192.168.225.101/32
...
2009-09-12 13:34:29 -PPTP- pptpGW = 85.21.0.102 WAN-IP = 192.168.225.101/32

 

Т.е. насколько я понимаю на внешнем интерфейсе локальной сети роутер получает правильный ip. А вот на ng0 происходит что-то не то. :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Т.е. насколько я понимаю на внешнем интерфейсе локальной сети роутер получает правильный ip. А вот на ng0 происходит что-то не то. :yes:

А этот глюк только с mpd4?

Может поиграться с ipcp ranges?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Нет, dhcp сервер не запущен вообще. Из побочного - только vpn-сервер на mpd5, но такая проблема возникала и до его поднятия.

 

Т.е. насколько я понимаю на внешнем интерфейсе локальной сети роутер получает правильный ip. А вот на ng0 происходит что-то не то. :(

 

Может это спецглюк mpd5?

 

У меня на mpd4 такого никогда не было.

И, судя по адресу 192.168.225.101, это именно кто-то из своих начинает выделять адрес не на свой интерфейс начиная со ...100. Такой адрес обычно задают для выделения "гостевым" девайсам. Так что копай в эту сторону. Для начала попробуй полностью отключить серверную часть мпд.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Может это спецглюк mpd5?

 

У меня на mpd4 такого никогда не было.

И, судя по адресу 192.168.225.101, это именно кто-то из своих начинает выделять адрес не на свой интерфейс начиная со ...100. Такой адрес обычно задают для выделения "гостевым" девайсам. Так что копай в эту сторону. Для начала попробуй полностью отключить серверную часть мпд.

 

В принципе, на mpd5 у меня только свой vpn-сервер. Клиент для корбины - mpd4.

192.168.225.101 - это как раз адрес, который прописан вручную для внутреннего интерфейса. dhcp сервера во внутренней сети точно нет.

ifconfig_msk0="inet 192.168.225.101  netmask 255.255.255.0"

 

Вырубил свой vpn-сервер.

А возможно в FreeBSD какое-нибудь подробное логирование действий на сетевых интерфейсах включить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
В принципе, на mpd5 у меня только свой vpn-сервер. Клиент для корбины - mpd4.

192.168.225.101 - это как раз адрес, который прописан вручную для внутреннего интерфейса. dhcp сервера во внутренней сети точно нет.

 

Вырубил свой vpn-сервер.

А возможно в FreeBSD какое-нибудь подробное логирование действий на сетевых интерфейсах включить?

 

У тебя на одной машине запущены два mpd? :)

 

Тогда так и должно быть. Они оба за нетграфовские интерфейсы хватаются.

И получается, что сервер выделяет адрес клиенту. :D

И создают туннель между собой.

Только в рамках одной машины. :D

Изменено пользователем Custler

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
У тебя на одной машине запущены два mpd? :D

 

Тогда так и должно быть. Они оба за нетграфовские интерфейсы хватаются.

И получается, что сервер выделяет адрес клиенту. :D

И создают туннель между собой.

Только в рамках одной машины. :D

 

Но у сервера mpd5 в конфиге прописано:

#################################################################

#

# MPD configuration file

#

# This file defines the configuration for mpd: what the

# bundles are, what the links are in those bundles, how

# the interface should be configured, various PPP parameters,

# etc. It contains commands just as you would type them

# in at the console. Lines without padding are labels. Lines

# starting with a "#" are comments.

#

# $Id: mpd.conf.sample,v 1.45 2007/11/26 20:41:37 amotin Exp $

#

#################################################################

 

startup:

# configure mpd users

# Задаем пароль для доступа в web-intarface

# т.е меняем password на свой пароль

set user admin password admin

# set user password cancer

# configure the console

set console self 127.0.0.1 5005

set console open

# configure the web server

set web self 0.0.0.0 5006

set web open

 

default:

load pptp_server

 

pptp_server:

# Определяем диапазон выдаваемых IP удалённым клиентам

# у меня с ...200 по ...220

set ippool add poolsat 192.168.225.210 192.168.225.220

create bundle template B

set iface enable proxy-arp

set iface idle 0

set iface enable tcpmssfix

set ipcp yes vjcomp

# IP адрес сервера, который мы будем показывать клиентам

# в моем случае 192.168.10.255 (т.е левый IP)

set ipcp ranges 192.168.225.221/32 ippool poolsat

# Если есть свой ДНС сервер, то меняем IP адрес

# set ipcp dns 192.168.10.1

 

# Enable Microsoft Point-to-Point encryption (MPPE)

set bundle enable compression

set ccp yes mppc

set mppc yes compress e40 e56 e128 stateless

 

create link template L pptp

set link enable multilink

set link yes acfcomp protocomp

 

set link action bundle B

set link no pap chap

set link enable chap

set link enable chap-msv1

set link enable chap-msv2

set link mtu 1460

set link keep-alive 10 75

 

# Configure PPTP and open link

# Тут указываем IP сетевой карты которая смотрит в ИНЕТ

# set pptp self 1.1.1.1

set link enable incoming

 

Т.е. 192.168.225.101 не входит в выдаваемые адреса. И большую часть времени все работает нормально. Т.е. корбиновский ng0 поднимается с корректным ip, и когда к этому ip коннектишься vpnом - поднимается ng1 и роутинг работает корректно.

 

Вот ifconfig

msk0: flags=8a43<UP,BROADCAST,RUNNING,ALLMULTI,SIMPLEX,MULTICAST> metric 0 mtu 1500

options=11a<TXCSUM,VLAN_MTU,VLAN_HWTAGGING,TSO4>

ether 00:13:d4:c4:62:ec

inet 192.168.225.101 netmask 0xffffff00 broadcast 192.168.225.255

media: Ethernet autoselect (1000baseTX <full-duplex,flag0,flag1>)

status: active

my0: flags=8a43<UP,BROADCAST,RUNNING,ALLMULTI,SIMPLEX,MULTICAST> metric 0 mtu 1500

ether 00:02:44:0d:49:90

inet 10.59.40.108 netmask 0xfffff800 broadcast 10.59.47.255

media: Ethernet 100baseTX <full-duplex>

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384

inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3

inet6 ::1 prefixlen 128

inet 127.0.0.1 netmask 0xff000000

pfsync0: flags=0<> metric 0 mtu 1460

syncpeer: 224.0.0.240 maxupd: 128

pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33204

ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1460

inet 78.106.207.38 --> 85.21.0.102 netmask 0xffffffff

ng1: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> metric 0 mtu 1396

inet 192.168.225.221 --> 192.168.225.211 netmask 0xffffffff

 

Пока отрубил mpd5, проверю что будет. Спасибо за наводки :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я mpd сервер не поднимал, поэтому точно сказать не могу, но где-то в настройках mpd надо явно прописать именно интерфесы - на каком что делается.

Вроде бы это в mpd.links должно прописываться. Почитай маны.

 

А работало, скорее всего, потому, что первым поднимался mpd4, создавал соединение с корбиной и дальше тихо спал.

Если же он не мог сделать соединение, то он продолжает долбится, а тут как раз рядом vpn сервак нарисовался - он к нему и цепляется.

Вот такая примерно логика, наверное.

Попробуй сначала пускать vpn сервак mpd5, а потом клиента mpd4, и добейся чтобы они правильно работали.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Попробуй сначала пускать vpn сервак mpd5, а потом клиента mpd4, и добейся чтобы они правильно работали.

 

Да, наверное так и надо. Проблема еще в том, что в конфиге mpd5, насколько я понял, можно указать только ip, который должен слушать сервер (интерфейс указать нельзя). Поэтому мне эту строчку приходится убирать совсем. Возможно из-за этого и косяк.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Попробуй сначала пускать vpn сервак mpd5, а потом клиента mpd4, и добейся чтобы они правильно работали.

 

Да, наверное так и надо. Проблема еще в том, что в конфиге mpd5, насколько я понял, можно указать только ip, который должен слушать сервер (интерфейс указать нельзя). Поэтому мне эту строчку приходится убирать совсем. Возможно из-за этого и косяк.

 

Всётаки попробуй поискать в манах (/usr/local/share/doc/mpd5/), мне кажется должна быть возможность разрулить именно интерфейсы.

Ну и попробуй сформулировать вопрос гуглу. Если правильно поставить вопрос, ответ должен быть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я нормально разрулил клиент и сервер на одном MPD. Фишка в том чтобы профиль с сервером запускать после поднятия интерфейса клиента. Разрулил несколькими скриптами, если интересно могу расписать в кратце.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Я нормально разрулил клиент и сервер на одном MPD. Фишка в том чтобы профиль с сервером запускать после поднятия интерфейса клиента. Разрулил несколькими скриптами, если интересно могу расписать в кратце.

 

Расскажи, плз. Конфиги бы я глянул.

 

У себя же на роутере нашел дополнительный косяк - в стандартной поставке FreeBSD 7.x идет корявый драйвер для Marvell'овских сетевух (msk).

Драйвер тупо убивает интерфейс через некоторое время (или кол-во прокачаннах данных). В логе идет что-то типа такого:

Sep 24 11:30:45 crbrouter kernel: msk0: link state changed to DOWN
Sep 24 11:30:50 crbrouter kernel: msk0: link state changed to UP
Sep 24 11:32:49 crbrouter kernel: msk0: watchdog timeout (missed Tx interrupts) -- recovering
Sep 24 11:34:54 crbrouter kernel: msk0: watchdog timeout (missed Tx interrupts) -- recovering

 

Решил сносом модуля msk из ядра и установкой драйвера с офсайта. Говорят, в восьмерке это пофиксили.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Я нормально разрулил клиент и сервер на одном MPD. Фишка в том чтобы профиль с сервером запускать после поднятия интерфейса клиента. Разрулил несколькими скриптами, если интересно могу расписать в кратце.

 

Расскажи, плз. Конфиги бы я глянул.

 

ОК, делал исключельно под свои задачи, так что половину можно выкинуть или упростить

Схема следующая: запускать клиента впн корбины во время старта мпд и после поднятия интерфейса скриптом вызывать инициализацию vpn-сервера. Делается это из скрипта up.sh который вызывается при поднятии интерфейса до корбины. При остановке интерфейса к корбине соответственно в обратном порядке - гасится впн-сервер и опускается клиентский интерфейс. Для управления Mpd я написал небольшой скриптик на перле который телнетом цепляется к консоли и выдает команды демону. Ну дальше по ходу ясно будет

 

mpd.conf

 

 

startup:
       set user mpdctl ********* admin
       set console self 127.0.0.1 5005
       set console open

default:
       load corbina-l2tp

corbina-l2tp:
   create bundle static WAN1
   set ipcp ranges 0.0.0.0/0 0.0.0.0/0
   set iface up-script "/usr/local/etc/mpd5/up.sh"
   set iface down-script "/usr/local/etc/mpd5/down.sh"
   set iface idle 0
   set iface disable on-demand
   set iface enable tcpmssfix

   create link static Corbina l2tp
   set link action bundle WAN1
   set link max-redial 0
   set link keep-alive 20 75
   set auth extacct-script /usr/local/etc/mpd5/acct.pl
   set auth enable ext-acct
   set l2tp disable dataseq
   set l2tp peer tp.corbina.net
   set auth authname "ghostmaster"
   open

srv-l2tp:
   set ippool add pool-srv 192.168.168.8 192.168.168.16
   create bundle template L2tp-tpl
   set iface enable proxy-arp
   set iface enable tcpmssfix
   set ipcp yes vjcomp

   set ipcp ranges 192.168.168.1/32 ippool pool-srv
   set ipcp dns 192.168.168.1
   set ipcp nbns 192.168.168.1
   set bundle enable compression
   set ccp yes mppc
   set mppc yes e40
   set mppc yes e128
   set mppc yes stateless
   set iface up-script "/usr/local/etc/mpd5/srv-ifup.pl"
   set iface down-script "/usr/local/etc/mpd5/srv-ifdown.pl"

   create link template inet-srv l2tp
   set link action bundle L2tp-tpl
   set link yes acfcomp protocomp
   set link no pap
   set link enable chap
   set link keep-alive 10 60
   set link mtu 1420
   set l2tp self 78.107.250.x
   set link enable incoming

 

В srv-ifup.pl srv-ifdown.pl ничего интересного нет, они просто добавляют/удаляют правила в фаервол для внешних впн-подключений.

 

up.sh - запускается при поднятии интерфейса корбины, там оч много всего, настройки роутинга, шейперов и пр.

Касательно сервера скрипт формирует down.sh в начало которого прописывает команду гашения сервера и собственно в самом конце запускает инициализацию сервера - вызов mpdcmd.pl с параметрами загрузки профиля из основного конфига.

 

#!/bin/sh

mpdcmd="./mpdcmd.pl"
l2tpsrv_init="load srv-l2tp"
l2tpsrv_down="destroy link inet-srv,destroy bundle L2tp-tpl"

# prepare down script
echo "#!/bin/sh
# Down script

......

#Shutdown L2tp server
$mpdcmd \"$l2tpsrv_down\" &

................

#end of down script" > /usr/local/etc/mpd5/down.sh

..............

###### Starting L2tp vpn-server

$mpdcmd "$l2tpsrv_init" &

 

Ну и собственно сам скрипт управления mpd, нужен модуль для перла Net::Telnet

 

mpdcmd.pl

 

#!/usr/bin/perl
# MPD console client
# by GhostMaster ©


#use IO::Socket;
use strict;
use Sys::Syslog qw(:DEFAULT setlogsock);
use Net::Telnet ();
#use Net::SNMP;


#####
### Configs
#####

my $progname = $0;

# MPD
my $cmdstr = shift || die "Usage: $progname <\"command 1, command n\"> \n";

my $mpdhost=  '127.0.0.1';
my $mpdport= '5005';
my $login = 'login';
my $pass = 'pass';

my $dumpfname = '/tmp/telnetdump';
my $logfname = '/tmp/telnetlog';

setlogsock('unix');
openlog($progname,'pid');

syslog("info","$progname invoked with options $cmdstr");

my @commands = split(/,/,$cmdstr);
## Open telnet session to MPD
my $t = Net::Telnet->new(   Timeout => 5,
                            Telnetmode => 'false',
                            Binmode => 'false',
                            Errmode => 'return',
                            Dump_Log   => $dumpfname,
                            Prompt => '/\[\w*\]\s$/' );

#my $dhandler = $t->dump_log($dumpfname);
#my $lhandler = $t->input_log($logfname);

syslog("info","Dumping data to $dhandler") if defined($dhandler);

$t->open (  Host => $mpdhost, Port => $mpdport ) or die syslog("info","ERROR: Can't telnet to mpd" . $t->errmsg() );

## Debuging
#$t->input_log('telnetlog');

syslog("info","Trying to login...");
$t->login($login, $pass) or die syslog("info","ERROR: Can't login to mpd. " . $t->errmsg() );

syslog("info","MPD login successful");

foreach ( @commands  )
{
   #print "Executing command $_\n";
   syslog("info","Executing command \"$_\"");
   $t->cmd("$_");
}

$t->print("exit");

exit 0;

 

Т.к. адрес у меня статический - он напрямую прописан в mpd.conf set l2tp self 78.107.250.x и сервер всегда при запуске слушает на нужном интерфейсе. Но с динамикой вобщем-то тут особой проблемы нет - надо добавить пару команд этим же скриптом чтобы перед запуском сервера он конфигурил self адрес который только что получил интерфейс-клиент до корбины.

 

ВОт такая схемка живет и здравствует уже довольно продолжительное время. Если что интересно - спрашивай, уточню.

 

У себя же на роутере нашел дополнительный косяк - в стандартной поставке FreeBSD 7.x идет корявый драйвер для Marvell'овских сетевух (msk).

 

Да кстати тут еще вопрос что более кривое - драйвер или сетевуха :( У меня точно такая же проблема была с драйвером vr и интегренной сетевухой via на какой-то micro-itx плате еще пару лет назад. Так и не вылечилось ничем, пришлось менять плату. Хотя разного дискретного хлама на via чипах я юзал много - нигде такого не было. Реалтеки такой же хлам, если исходники драйверов почитать - рыдать хочется, одни костыли для железа :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ОК, делал исключельно под свои задачи, так что половину можно выкинуть или упростить

 

Спасибо! :pray:

Щас буду ботать, как мне это прикрутить аккуратно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Пакеты не грузятся - приходится устанавливать в ручную. Просто проблема видать в том, что пакеты то обновились и чексум не совпадает с новыми. Приходится искать старые пакеты и подсовывать в /usr/ports/distfiles (((

Да, скрипт, кстати, говорит что все ок. а на самом деле ничего не ок ))

 

зы - если установить их в ручную - то все работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Уважаемый господин Custler.

Подскажите, могу ли я использовать другой IP адрес на внутреннем интерфейсе допустим 192.168.1.101 потому как 192.168.1.1 уже занят.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Уважаемый господин Custler.

Подскажите, могу ли я использовать другой IP адрес на внутреннем интерфейсе допустим 192.168.1.101 потому как 192.168.1.1 уже занят.

Можно. Этот адрес в скриптах нигде не прописан, а читается из конфигурации интерфейса. Какой адрес задан на внутреннем интерфейсе роутера - такой и будет адресом шлюза.

Я специально делал, чтобы можно было в домашней сети сделать любое адресное пространство (в пределах разумного).

Однако большого тестирования на эту тему я не проводил, так что надо внимательно проверить конфиги, которые создаст скрипт.

И надо быть осторожным, чтобы, если в одной подсети есть ещё роутеры, были правильно расписаны маршруты и шлюзы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Уважаемый господин Custler.

Подскажите, могу ли я использовать другой IP адрес на внутреннем интерфейсе допустим 192.168.1.101 потому как 192.168.1.1 уже занят.

Можно. Этот адрес в скриптах нигде не прописан, а читается из конфигурации интерфейса. Какой адрес задан на внутреннем интерфейсе роутера - такой и будет адресом шлюза.

Я специально делал, чтобы можно было в домашней сети сделать любое адресное пространство (в пределах разумного).

Однако большого тестирования на эту тему я не проводил, так что надо внимательно проверить конфиги, которые создаст скрипт.

И надо быть осторожным, чтобы, если в одной подсети есть ещё роутеры, были правильно расписаны маршруты и шлюзы.

 

Огромное спасибо. Займусь тестированием.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

проблема с туннелем, поднимающимся с адресом локальной сети так и не решилась, поэтому пошёл самым тупым путём:

 

#!/usr/local/bin/bash
#checking tunnel
read addr addr junk < <(ifconfig | tail -1)
if [[ "$addr" == 'my_local_address' ]]; then /root/restart_inet.sh;

 

#!/usr/local/bin/bash
#restarting mpd4
killall mpd4
sleep 10
/usr/local/sbin/mpd4 -b

 

и в крон на ежеминутный запуск

Изменено пользователем lennon

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Большое спасибо за скрипт, без него пришлось бы туго) С ним слегка тоже пришлось повозиться, но в основном все свои ошибки были. А из проблем самого скрипта - не поставил мпд, пришлось отдельно качать. А так все пока хорошо работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У МЕНЯ НАКОНЕЦ ЗАРАБОТАЛО IPTV !!! :blink:

 

Причина скорее всего, была в баге igmpproxy.

Используйте последнюю версию : 0.1 ( http://sourceforge.net/projects/igmpproxy/...tar.gz/download )

140.2 KB 2009-10-05

НЕ БЕТА !

 

Возможно, что в ближайшее время появятся соответствующие порты.

Если компилите сами из кодов, убедитесь, что в файле config.c в

struct vifconfig *parsePhyintToken()

строка 244 выглядит НЕ ТАК:

 

tmpPtr->name = (char *)malloc(sizeof(char) * strlen(token) );

 

А, например вот так:

 

tmpPtr->name = (char *)malloc(sizeof(char) * (strlen(token) + 1) );

 

или:

 

// Make a copy of the token to store the IF name
tmpPtr->name = strdup( token );

 

Итак, что бы все заработало, нужно:

1. Установить все, как описано в посте уважаемого Custler, я установил и igmpproxy тоже (делает igmpproxy.conf).

2. Скачиваем igmpproxy версии 0.1 с http://sourceforge.net/projects/igmpproxy

FILES -> Newest files -> igmpproxy-0.1.tar.gz (НЕ БЕТУ) ;

3. Делаем бэкап файла igmpproxy.conf:

[code# cp /usr/local/etc/igmpproxy.conf /usr/local/etc/igmpproxy.conf.backup[/code]

Если у вас файл не тут, найти его можно командой:
# find . -name 'igmpproxy.conf' -print

 

4. СОБИРАЕМ и устанавливаем igmpproxy:

Переходим в директорию, где лежит скачанный igmpproxy-0.1.tar.gz, далее распаковываем и собираем:

 

tar -xvf igmpproxy-0.1.tar.gz
cd ./igmpproxy/src/
./configure
make &&  make install

 

5. Приступаем к настройке:

восстанавливаем конфигурационный файл:

# cp /usr/local/etc/igmpproxy.conf.backup /usr/local/etc/igmpproxy.conf

 

6. Первый запуск свежеустановленного igmpproxy. В консоли запускаем:

# igmpproxy -d /usr/local/etc/igmpproxy.conf

ключ -d заставляет igmpproxy выводить все свои сообщения на экран консоли,

указываем конф. файл принудительно во избежании ошибок.

 

7. Скорее всего, на этом этапе - IPTV у Вас еще не работает - без паники!

Смотрим на вывод сообщений на экран консоли.

Если igmpproxy не запустился, и вылетел с ошибкой, значит, на одном из предыдущих этапов - что то пошло не так, или была допущена ошибка.

Убедитесь, что скачана правильная или более поздняя версия (см. п. 2).

 

8. Если с ошибкой не вылетел, и продолжает работать, то смотрим на вывод в консоли:

Скорее всего, постоянно появляются сообщения типа:

The source address 78.107.196.8 for group 233.33.210.86, is not in any valid net for upstream VIF.

 

Это значит, что нужно подкрутить конфигурацию в igmpproxy.conf. Для этого:

# ee /usr/local/etc/igmpproxy.conf

ee - это редактор в FreeBSD, есть как минимум в версиях 7.0 .. 7.2

 

Находим в этом файле находим строки вида

		altnet 233.33.210.0/24
	altnet 239.255.255.0/24

 

 

Добавляем сюда новую строку:

 

altnet 78.107.196.0/24

Адрес 78.107.196.* мы взяли из сообщения об ошибке в пункте 8.

В зависимости от Вашего провайдера, конкретного сегмента сети, этот адрес может быть различным.

Наверное, могут быть несколько разных адресов.

Advanced: Подобрать правильные адреса для altnet можно с помощью утилиты tcpdump.

 

Цитата с форума:

Надо в альтнете писать не мультикас адреса-то! А сурс адреса с которых разрешено через этот интерфейс получать потоки.

Сохраняем igmpproxy.conf : для этого, находясь в окне консоли с запущенным ee, нажимаем Escape, далее - в меню "Leave editor" -> "Save changes".

 

9. Далее, в консоли где запущен igmpproxy, останавливаем его: Ctrl + C.

и запускаем снова, как описано в п. 6.

Снова смотрим на вывод igmpproxy в консоли, убеждаемся, что нет сообщений об ошибках.

 

10. И, наконец, на клиентском компе, включаем Вашу любимую программу для просмотра IPTV.

Если звезды легли правильным образом, то - О чудо!!! Вы видите отличную картинку со звуком!!!

Мои поздравления!

 

Соответственно, предварительно программа для просмотра IPTV на клиентском компе должна быть заблагорвеменно:

- настроена на все имеющиеся каналы,

- нормально показывать на компе, подключенном напрямую к кабелю провайдера, и т.д.

 

Возможные проблемы, и способы решения (видел в форумах):

 

А. Картинка сразу или через нек. время начинает рассыпаться, квадратики, и т.д.

- у Вас в прокси - сервере гигабитная сетевая PCI карта?

Если гиговые PCI и не пеключить на 100 мбит то будет глючить.

Надо 100 мбит включить.

Попробуй сделать так:

На примере e1000

rmmod e1000

modprobe e1000 Speed=100

 

Б. прокси - сервер наглухо вешается при быстром переключении программ на клиенте:

Известная проблема. У меня пока не наблюдалась!

Если используете программы для авто поиска каналов, то установите большое значение тайм-аута: 30 .. 60 сек.

 

Мое окружение:

Комп сервера: Старое железо, P4, sis0 - карта к провайдеру, rl0- карта в локалку;

клиенты: Win XP Pro, Vista;

Провайдер: Corbina, р-н Лефортово.

 

БОЛЬШОЕ СПАСИБО Custler за проделанную работу и скрипт!!!

Ждем версию с failover-ом, встроенным DHCP для домашней сетки!!!

 

ВСЕМ ПРИЯТНОГО ПРОСМОТРА!!!

 

с уважением, encor44

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас