пятница, 12 ноября 2010 г.

И еще один скрипт

И еще один вариант скрипта. На этот раз всё изменилось ооооооочень значительно! Теперь всё просто МЕГА КРУТО! Наконецто я разобрался с ip-up, так что теперь соединение поднимается как часы, мгновенно! Вообщем это скрипт, который технически работает по тому же принципу, что и родные. А значит и стабильность обещяет быть на высоте!
Собственно сам вымученный скрипт:
#!/bin/sh -v
# Dual pppoe connection
# Version 3.01
# Copyright dE1l
LOGIN_INT="******"
PASSW_INT="******"
LOGIN_LAN="******/local"
PASSW_LAN="******"
VLAN="*****"
DNS3=192.168.1.1
DNS1=10.152.195.41
DNS2=8.8.8.8
OPEN_PORT=12312
OPEN_PORT_2=12313
LOCAL_CLIENT=192.168.1.100
LOCAL_CLIENT_2=192.168.1.101

#constanty
LAN_SUBNET=10.152.0.0/16

# jdem, poka router progruzit vse svoi servisy
sleep 3

# podnimaev VLAN esli nyzhno########
if [ -n 'ifconfig |grep ${VLAN}' ]; then
ifconfig ${VLAN} up
sleep 1
fi

# ochischaem marshruty
iptables -t nat -F POSTROUTING

# Sozdaem rabochuyu papku i fail dlya logov
mkdir /tmp/ppp
touch /tmp/ppp/ipup_test.log
echo "`date` start script v3.01">> /tmp/ppp/ipup_test.log

#-----------------------------------------------
# Sozdanie failov(configov) podklyuchenii
################################################
echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
defaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user '${LOGIN_INT}'
password '${PASSW_INT}'
default-asyncmap
mtu 1492
mru 1492
unit 0
persist
maxfail 0
holdoff 30
lcp-echo-interval 10
lcp-echo-failure 5" > /tmp/ppp/int.pppoe

echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
nodefaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user '${LOGIN_LAN}'
password '${PASSW_LAN}'
default-asyncmap
mtu 1492
mru 1492
unit 1
persist
maxfail 0
holdoff 30
lcp-echo-interval 10
lcp-echo-failure 5" > /tmp/ppp/loc.pppoe
#-----------------------------------------------


#-----------------------------------------------
# Blok soedinenii i marshrutov
################################################
echo '#!/bin/sh -v
echo "`date` start /tmp/ppp/ip-up for $1">> /tmp/ppp/ipup_test.log
WLAN_SUBNET=192.168.1.0/24
LAN_SUBNET=10.152.0.0/16
echo $1
if [ $1 == ppp0 ]; then
iptables -t nat -I POSTROUTING -s ${WLAN_SUBNET} -o ppp0 -j SNAT --to-source $4
fi
if [ $1 == ppp1 ]; then
ip ro add ${LAN_SUBNET} dev ppp1
iptables -t nat -I POSTROUTING 2 -s ${WLAN_SUBNET} -d ${LAN_SUBNET} -o ppp1 -j SNAT --to-source $4
fi
' > /tmp/ppp/ip-up

echo '#!/bin/sh -v
echo "`date` start /tmp/ppp/ip-down for $1">> /tmp/ppp/ipup_test.log
' > /tmp/ppp/ip-down

# Delaem ispolnyaemymi
chmod +x /tmp/ppp/ip-up
chmod +x /tmp/ppp/ip-down

sleep 2

# Startuem soedineniya
pppd file /tmp/ppp/int.pppoe
sleep 3
pppd file /tmp/ppp/loc.pppoe
#-----------------------------------------------


#-----------------------------------------------
# Otkryvaem porty
################################################
iptables -t nat -I PREROUTING -p tcp --dport ${OPEN_PORT} -i ppp1 -s ${LAN_SUBNET} -j DNAT --to-destination ${LOCAL_CLIENT}:${OPEN_PORT}
iptables -t nat -I PREROUTING -p udp --dport ${OPEN_PORT} -i ppp1 -s ${LAN_SUBNET} -j DNAT --to-destination ${LOCAL_CLIENT}:${OPEN_PORT}
iptables -t nat -I PREROUTING -p tcp --dport ${OPEN_PORT_2} -i ppp1 -s ${LAN_SUBNET} -j DNAT --to-destination ${LOCAL_CLIENT_2}:${OPEN_PORT_2}
iptables -t nat -I PREROUTING -p udp --dport ${OPEN_PORT_2} -i ppp1 -s ${LAN_SUBNET} -j DNAT --to-destination ${LOCAL_CLIENT_2}:${OPEN_PORT_2}
#-----------------------------------------------

sleep 3

#-----------------------------------------------
# propisovaem DNS
################################################
nvram set wan_dns="$DNS1 $DNS2 $DNS3"
echo "nameserver $DNS1" >/tmp/resolv.dnsmasq
echo "nameserver $DNS2" >>/tmp/resolv.dnsmasq
echo "nameserver $DNS3" >>/tmp/resolv.dnsmasq
echo "address=/torrent.dml/10.152.195.95
address=/taunt.local/10.152.203.3
address=/decker.local/10.152.196.50
address=/radio.local/10.152.205.167
address=/cat.dsl/10.152.203.3
address=/forum.local/10.152.205.139
address=/img.local/10.152.195.4
" >>/tmp/dnsmasq.conf
pr="$(ps|awk '/dnsmasq/ {print $1}')"
kill -9 $pr
dnsmasq --conf-file=/tmp/dnsmasq.conf

# ifconfig
# ip ro
# iptables -t nat -n -L
Изменения:
Маршруты теперь прописываются в ip-up
Появился ЛОГ! найти его можно по адресу /tmp/ppp/ipup_test.log В нём вы можете увидеть работу ip-up и как часто у вас происходят реконекты. Чесгря, инфа(статистика) буде интересна даже мне)
Еще в прошлом скрипте наладилась работа DNS. Теперь он работает по такому же принципу, как hosts в винде. А это значит, что нам с вами потребуется собрать единую базу для нашей сети и добавить в список всевозможные внутренние адреса.
Теперь оба соединения работают через SNAT. Как показали тесты, для локалки на dir-320 это дало прирост в скорости скачивания на 20%. Теперь инет тоже работает через SNAT и это, возможно, так же уменьшит нагрузку на процессор.
Замечено еще вот что.
Для того, чтобы открыть порт, вам необходимо: отключить файрвол в роутере, запустить торрент на компе и указать в настройках порт, соответствующий вашему ip и порту, прописанному в скрипте. Только после этого вы можете проверить, открылся ли порт тут
http://decker.local/testport.php?port=12312

Новый скрипт

скрипт, сделаный и протестеный мною только что
#!/bin/sh -v
LOGIN_INT="***"
PASSW_INT="***"
LOGIN_LAN="***/local"
PASSW_LAN="***"
VLAN="***"
DNS3=192.168.1.1
DNS1=10.152.195.41
DNS2=8.8.8.8

#jdem, poka router progruzit vse svoi servisy
sleep 3

#podnimaev VLAN esli nyzhno########
if [ -n 'ifconfig |grep ${VLAN}' ]; then
ifconfig ${VLAN} up
sleep 1
fi

#ochischaem marshruty
iptables -t nat -F POSTROUTING

#-----------------------------------------------
#Sozdanie failov(configov) podklyuchenii
################################################
echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
defaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user '${LOGIN_INT}'
password '${PASSW_INT}'
default-asyncmap
mtu 1492
mru 1492
unit 0
persist
maxfail 0
holdoff 30
lcp-echo-interval 10
lcp-echo-failure 5" > /tmp/int.pppoe

echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
nodefaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user '${LOGIN_LAN}'
password '${PASSW_LAN}'
default-asyncmap
mtu 1492
mru 1492
unit 1
persist
maxfail 0
holdoff 30
lcp-echo-interval 10
lcp-echo-failure 5" > /tmp/loc.pppoe

#-----------------------------------------------
#Sozdaem fail, podnimayuschii soedinenie s internetom,
#i propisyvayuschii marshrutizaciyu
################################################
echo '#!/bin/sh -v
#podnimaet soedinenie
pppd file /tmp/int.pppoe
#Pishem marshrutizaciyu
WLAN_SUBNET=192.168.1.0/24
iptables -t nat -I POSTROUTING -s ${WLAN_SUBNET} -o ppp0 -j MASQUERADE
' > /tmp/run_int.sh
#-----------------------------------------------

#-----------------------------------------------
#Sozdaem fail, podnimayuschii soedinenie s lokalkoi,
#ojidayuschii ustanovlenie soedineniya, propisyvayuschii
#marshrutizaciyu i otkryvayuschii porty
################################################
echo '#!/bin/sh -v
#podnimaet soedinenie
pppd file /tmp/loc.pppoe
#ojidanie ustanovleniya soedineniya
i=0
while [ -n `ifconfig |grep ppp1` ] && [ $i -le 500 ]; do
let i=$i+3
sleep 3
done
#Pishem marshrutizaciyu
WLAN_SUBNET=192.168.1.0/24
LAN_SUBNET=10.152.0.0/16
OPEN_PORT=12312
OPEN_PORT_2=12313
LOCAL_CLIENT=192.168.1.100
LOCAL_CLIENT_2=192.168.1.101

iptables -t nat -I POSTROUTING 2 -s ${WLAN_SUBNET} -d ${LAN_SUBNET} -o ppp1 -j MASQUERADE
ip ro add ${LAN_SUBNET} dev ppp1
# ip ro flush cache

iptables -t nat -I PREROUTING -p tcp --dport ${OPEN_PORT} -i ppp1 -s ${LAN_SUBNET} -j DNAT --to-destination ${LOCAL_CLIENT}:${OPEN_PORT}
iptables -t nat -I PREROUTING -p udp --dport ${OPEN_PORT} -i ppp1 -s ${LAN_SUBNET} -j DNAT --to-destination ${LOCAL_CLIENT}:${OPEN_PORT}
iptables -t nat -I PREROUTING -p tcp --dport ${OPEN_PORT_2} -i ppp1 -s ${LAN_SUBNET} -j DNAT --to-destination ${LOCAL_CLIENT_2}:${OPEN_PORT_2}
iptables -t nat -I PREROUTING -p udp --dport ${OPEN_PORT_2} -i ppp1 -s ${LAN_SUBNET} -j DNAT --to-destination ${LOCAL_CLIENT_2}:${OPEN_PORT_2}

' > /tmp/run_loc.sh
#-----------------------------------------------

#Delaem faily ispolnyaemymi
chmod +x /tmp/run_int.sh
chmod +x /tmp/run_loc.sh

#Startuem skripty soedinenii
/tmp/run_int.sh
/tmp/run_loc.sh

sleep 3

#-----------------------------------------------
#propisovaem DNS
################################################
nvram set wan_dns="$DNS1 $DNS2 $DNS3"
echo "nameserver $DNS1" >/tmp/resolv.dnsmasq
echo "nameserver $DNS2" >>/tmp/resolv.dnsmasq
echo "nameserver $DNS3" >>/tmp/resolv.dnsmasq
echo "address=/torrent.dml/10.152.195.95
address=/taunt.local/10.152.203.3
address=/decker.local/10.152.196.50
address=/radio.local/10.152.205.167
address=/cat.dsl/10.152.203.3
address=/forum.local/10.152.205.139
address=/img.local/10.152.195.4
" >>/tmp/dnsmasq.conf
pr="$(ps|awk '/dnsmasq/ {print $1}')"
kill -9 $pr
dnsmasq --conf-file=/tmp/dnsmasq.conf


#-----------------------------------------------
#Sozdaem fail, proveryayuschii nalichie marshruta
#k lokalke. Reconnect route control block.
################################################
echo '#!/bin/sh
LAN_SUBNET=10.152.0.0/16
if [ -n `ip ro|grep ${LAN_SUBNET}` ]; then
ip ro add ${LAN_SUBNET} dev ppp1
fi' > /tmp/loc.ip-up

#Delaem fail ispolnyaemym i dobavlyaem na
#zapusk kajdye 2 minuty v cron
chmod +x /tmp/loc.ip-up
echo "*/2 * * * * root /tmp/loc.ip-up" >> /tmp/cron.d/cron_jobs

#Blok dlya pravil'noi raboty cron
/usr/bin/killall -9 cron
/bin/rm /tmp/cron.d/check_ps
/bin/touch /tmp/cron.d/check_ps
/usr/sbin/cron

# ifconfig
# ip ro
# iptables -t nat -n -L
# Copyright dE1l v 2.0

Известные проблемы - при реконекте отваливается маршрут ip ro add ${LAN_SUBNET} dev ppp1
Из подводных камней - если не работает ДНС - проверьте /tmp/dnsmasq.conf на наличие записей вида address=/
Если их нет, значит скрипт сработал быстрей, чем загрузился дефолтный dnsmasq демон роутера. Выход - увеличить sleep перед прописыванием dns.

четверг, 11 ноября 2010 г.

спойлер


А здесь текст, который хочешь сделать скрытым

Взято тут http://dotrb.blogspot.com/2009/07/skrytyj-tekst-v-bloge.html

понедельник, 8 ноября 2010 г.

Я уже не помню что писал в прошлом посте, а перечитывать его сейчас очень влом.
Мне нужно транслировать iptv через WiFi, поэтому нужно использовать UDPXY

Итак, включаем JFFS в настройках, форматируем его. После чего имеем /jffs/ папку, в которой файлы не стираются после ребута роутера.
Заливаем туда udpxy
cd /jffs/
wget http://citylan.dl.sourceforge.net/project/udpxy/udpxy/Chipmunk-1.0/udpxy.1.0-Chipmunk-16.tgz

понедельник, 1 ноября 2010 г.

Настройка роутера на dd-wrt для Домолинк 2 соединения

Итак, наконец-то у меня дошли руки написать для себя инструкцию, как настраивать роутер.
Или не дошли...))
План:
Прошить
Почитать можно тут
http://dd-wrt.com/wiki/index.php/Linksys_WRT610N_v2.0
и тут
http://dd-wrt.com/wiki/index.php/Linksys_WRT610N
Прошивку брать тут
ftp://dd-wrt.com/others/eko/BrainSlayer-V24-preSP2/10-26-10-r15506/broadcom_K26/ (соответственно выбрать новую версию)
Сначало шить dd-wrt.v24-15506_NEWD-2_K2.6_mini_wrt610nv2.bin из заводской родной GUI
Сделать ресет 30\30\30
Потом прошить такую
dd-wrt.v24-15506_NEWD-2_K2.6_std_usb_nas.bin
или такую
dd-wrt.v24-15506_NEWD-2_K2.6_mega.bin
по желанию.
Сделать ресет 30\30\30
Теперь можно настраивать.
Нужна настроить
Соединение для IPTV
Setup\Basic Setup\WAN Setup
Connection Type: Static IP
WAN IP Address: 1.1.1.1
Subnet Mask: 255.255.255.0
NTP pool.ntp.org
Time zone +03.00
Остальные не трогаем.
Теперь нужно разрешить мультикаст
идём в Security
Убираем галочку Filter Multicast
Применяем
Отключаем SPI Firewall: Disable
Применяем
Services\Services\DNSMasq\Additional DNSMasq Options
вставляем
address=/torrent.dml/10.152.195.95
address=/taunt.local/10.152.203.3
address=/decker.local/10.152.196.50
address=/radio.local/10.152.205.167
address=/cat.dsl/10.152.203.3
address=/forum.local/10.152.205.139
тут же надо добавить статичекие адреса основным устройствам с привязкой по MAC
кнопочкой Add
А теперь самое интересное - сам срипт
Идем в Administration\Commands\Command Shell
и вставляем это
#!/bin/sh -v
LOGIN_INT="******"
PASSW_INT="******"
LOGIN_LAN="******/local"
PASSW_LAN="******"
VLAN="******"
DNS3=192.168.1.1
DNS1=10.152.195.41
DNS2=8.8.8.8

########Ukazat' vlan interneta, esli ne cherez vlan1########
if [ ${VLAN} ]; then
ifconfig ${VLAN} up
sleep 1
else
exit
fi
########Sozdanie failov podklyucheniya########
echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
defaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user '${LOGIN_INT}'
password '${PASSW_INT}'
default-asyncmap
mtu 1492
mru 1492
unit 0
persist
maxfail 0
holdoff 30
lcp-echo-interval 10
lcp-echo-failure 5" > /tmp/int.pppoe

echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
nodefaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user '${LOGIN_LAN}'
password '${PASSW_LAN}'
default-asyncmap
mtu 1492
mru 1492
unit 1
persist
maxfail 0
holdoff 30
lcp-echo-interval 10
lcp-echo-failure 5" > /tmp/lan.pppoe
########Podklyuchenie soedinenii########
pppd file /tmp/int.pppoe
pppd file /tmp/lan.pppoe
########Poluchenie informacii o soedineniyah########
i=0
while [ ${INT_IP} = ] && [ $i -le 50 ]; do
INT_IP="`ifconfig |grep 10.50. |awk '{print ($2)}' |awk -F: '{print ($2)}'`"
let i=$i+1
sleep 2
done
i=0
while [ ${LAN_IP} = ] && [ $i -le 50 ]; do
LAN_IP="`ifconfig |grep 10.150. |awk '{print ($2)}' |awk -F: '{print ($2)}'`"
let i=$i+1
sleep 2
done


########Izmenyaem iptables########
WLAN_SUBNET=192.168.1.0/24
INT_SUBNET=10.50.0.0/16
LAN_SUBNET=10.152.0.0/16
OPEN_PORT=12312
OPEN_PORT_2=12313
LOCAL_CLIENT=192.168.1.100
LOCAL_CLIENT_2=192.168.1.101

iptables -t nat -F POSTROUTING
iptables -t nat -I POSTROUTING -s ${WLAN_SUBNET} -o ppp0 -j MASQUERADE
iptables -t nat -I POSTROUTING 2 -s ${WLAN_SUBNET} -d ${LAN_SUBNET} -o ppp1 -j SNAT --to-source ${LAN_IP}
ip ro add ${LAN_SUBNET} via ${LAN_IP}

iptables -t nat -I PREROUTING -p tcp --dport ${OPEN_PORT} -i ppp1 -s ${LAN_SUBNET} -d ${LAN_IP} -j DNAT --to-destination ${LOCAL_CLIENT}:${OPEN_PORT}
iptables -t nat -I PREROUTING -p udp --dport ${OPEN_PORT} -i ppp1 -s ${LAN_SUBNET} -d ${LAN_IP} -j DNAT --to-destination ${LOCAL_CLIENT}:${OPEN_PORT}
iptables -t nat -I PREROUTING -p tcp --dport ${OPEN_PORT_2} -i ppp1 -s ${LAN_SUBNET} -d ${LAN_IP} -j DNAT --to-destination ${LOCAL_CLIENT_2}:${OPEN_PORT_2}
iptables -t nat -I PREROUTING -p udp --dport ${OPEN_PORT_2} -i ppp1 -s ${LAN_SUBNET} -d ${LAN_IP} -j DNAT --to-destination ${LOCAL_CLIENT_2}:${OPEN_PORT_2}
########propisovaem DNS
nvram set wan_dns="$DNS1 $DNS2 $DNS3"
echo "nameserver $DNS1" >/tmp/resolv.dnsmasq
echo "nameserver $DNS2" >>/tmp/resolv.dnsmasq
echo "nameserver $DNS3" >>/tmp/resolv.dnsmasq
pr="$(ps|awk '/dnsmasq/ {print $1}')"
kill -9 $pr
dnsmasq --conf-file=/tmp/dnsmasq.conf


########sozdaem skript dlya proverki rekonekta LAN soedineniya i izmeneniya

ip########
echo "#!/bin/sh
if [ -n 'ip ro|grep 10.152.0.0' ]; then
LAN_IP=\`ifconfig |grep 10.150. |awk '{print (\$2)}' |awk -F: '{print (\$2)}'\`
WLAN_SUBNET=192.168.1.0/24
LAN_SUBNET=10.152.0.0/16
OPEN_PORT=12312
OPEN_PORT_2=12313
LOCAL_CLIENT=192.168.1.100
LOCAL_CLIENT_2=192.168.1.101

ip ro add \${LAN_SUBNET} via \${LAN_IP}
iptables -t nat -F POSTROUTING
iptables -t nat -I POSTROUTING -s \${WLAN_SUBNET} -o ppp0 -j MASQUERADE
iptables -t nat -I POSTROUTING -s \${WLAN_SUBNET} -d \${LAN_SUBNET} -o ppp1 -j SNAT --to-source \${LAN_IP}
iptables -t nat -F PREROUTING
iptables -t nat -I PREROUTING -p tcp --dport \${OPEN_PORT} -i ppp1 -s \${LAN_SUBNET} -j DNAT --to-destination \${LOCAL_CLIENT}:\${OPEN_PORT}
iptables -t nat -I PRERIUTING 2 -p udp --dport \${OPEN_PORT} -i ppp1 -s \${LAN_SUBNET} -j DNAT --to-destination \${LOCAL_CLIENT}:\${OPEN_PORT}
iptables -t nat -I PREROUTING -p tcp --dport \${OPEN_PORT_2} -i ppp1 -s \${LAN_SUBNET} -j DNAT --to-destination \${LOCAL_CLIENT_2}:\${OPEN_PORT_2}
iptables -t nat -I PRERIUTING 2 -p udp --dport \${OPEN_PORT_2} -i ppp1 -s \${LAN_SUBNET} -j DNAT --to-destination \${LOCAL_CLIENT_2}:\${OPEN_PORT_2}

fi" > /tmp/lan.ip-up

########Delaem fail ispolnyaemym i dobavlyaem na zapusk kajdye 2 minuty v

cron########
chmod +x /tmp/lan.ip-up
echo "*/2 * * * * root /tmp/lan.ip-up" >> /tmp/cron.d/cron_jobs

########etot blok ne trogat'! kritichen dlya podderjaniya jizni soedinenii########
/usr/bin/killall -9 cron
/bin/rm /tmp/cron.d/check_ps
/bin/touch /tmp/cron.d/check_ps
/usr/sbin/cron

ifconfig br0 mtu 1492

exit

# ifconfig
# ip ro
# iptables -t nat -n -L

Соответственно меняем логин и пароль на свои
Но самое главное - это переменная VLAN. Важна она тем, что она для каждого роутера - своя.
Например у
Linksys wrt160nl - eth1
Linksys wrt610n v2 - vlan2
 D-link dir-320 - vlan1
Но я заметил закономерность! Нашел, где его можно подсмотреть!
Идём в
Setup\Networking\Port Setup\WAN Port Assignment
там и будет написан vlan, который у вас!