Dual Access PPTP

From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 17:01, 8 December 2009 (edit)
Anymore (Talk | contribs)

← Previous diff
Current revision (12:19, 9 January 2011) (edit) (undo)
Koshika (Talk | contribs)

 
(One intermediate revision not shown.)
Line 17: Line 17:
Где-то видел писали, что sed в dd-wrt вырезан на самом деле это не так в стандартной прошивке он присутствует и прекрасно отрабатывает. Проверить действие скрипта можно в консоли с помощью Где-то видел писали, что sed в dd-wrt вырезан на самом деле это не так в стандартной прошивке он присутствует и прекрасно отрабатывает. Проверить действие скрипта можно в консоли с помощью
- сат /tmp/pptpd_client/ip-up+ cat /tmp/pptpd_client/ip-up
должна присутствовать строка route del $5 должна присутствовать строка route del $5
Line 136: Line 136:
# http://forum.tktor.ru/index.php?t=838&o=0&st=0 # http://forum.tktor.ru/index.php?t=838&o=0&st=0
 +
 +Способ №:3
 +
 +При статическом IP:
 +На закладке WAN Setup выбираем PPTP и заполняем в соответствии с тем, что дал провайдер (IP-адрес / логин / пароль /адрес vpn сервеа)
 +
 +Далее Administration --> Management --> Устанвить '''Cron''' в режим enable
 +
 +Далее Administration --> Command и вбиваем скрипт в '''Startup''' примерно следующего содержания:
 +
 + #!/bin/sh
 + mkdir -p /tmp/cron.d
 + cat <<"ENDOFFILE" > /tmp/fix-pptp-settings.sh
 + if [ "$1" = "--check" ];then
 + if [ "$(nvram get wan_gateway)" != "XXX.XXX.XXX.XXX" ]; then
 + while read param; do
 + nvram set $param
 + sleep 2
 + done <<EOF
 + wan_gateway=XXX.XXX.XXX.XXX
 + wan_netmask=XXX.XXX.XXX.XXX
 + wan_ipaddr=XXX.XXX.XXX.XXX
 + EOF
 + fi
 + elif [ "$1" = "--daemon" ];then
 + while true; do
 + $0 --check
 + sleep 60
 + done
 + fi
 + ENDOFFILE
 + chmod 700 /tmp/fix-pptp-settings.sh
 + sh -c "/tmp/fix-pptp-settings.sh --daemon &"
 +
 +Естественно не забыть поставить вместо '''XXX.XXX.XXX.XXX''' свои значения ip-адреса, маски и шлюза.
 +
 +Данный скрипт будет запускаться по cron'у раз в минуту и при отвале VPN cкрипт установит все значения на заданные, чтобы снова подключиться через vpn.
 +
 +-------
 +
 +'''Источник:'''
 +# http://www.e1.ru/talk/forum/read.php?f=27&i=171067&t=171067
[[Category:Русская документация]] [[Category:Русская документация]]

Current revision

Способ №1:

На закладке WAN Setup выбираем Static или DHCP (в зависимости от того, что дал провайдер), далее Services --> PPTP --> PPTP Client (так же заполняем в зависимости что дал провайдер, если нет шифрования - MPPE Encryption оставляем пустой).

Далее Advanced Routing --> Static Routing вбиваем ip vpn-сервера (если он представлен в виде vpn.provaider.ru, ip посмотреть можно через nslookup) через свой шлюз, далее здесь же локальные маршруты и при необходимости на DNS.

Для Корбины теперь необходимо удалить маршрут на vpn после подъема pptp, для этого идем Administration --> Commands и вбиваем такой скрипт:

(while [ ! -f /tmp/pptpd_client/ip-up ]; do sleep 10; done 
cp /tmp/pptpd_client/ip-up /tmp/ipup.tmp 
sed -e '/keloke/a \ 
route del $5' < /tmp/ipup.tmp > /tmp/pptpd_client/ip-up 
route del default) &

Где-то видел писали, что sed в dd-wrt вырезан на самом деле это не так в стандартной прошивке он присутствует и прекрасно отрабатывает. Проверить действие скрипта можно в консоли с помощью

cat /tmp/pptpd_client/ip-up

должна присутствовать строка route del $5

Нажимаем Save Startup, перезагружаемся и по идее должно все работать.

Проверить что туннель поднялся можно через команду ifconfig в консоли, должен появиться интерфейс ppp0.

bologov


Источник:

  1. http://www.dd-wrt.com/phpBB2/viewtopic.php?p=238332#238332


Способ №2:

0. Подготовка. Для начала надо сменить MAC адрес что смотрит в Вашу сеть

   ifconfig vlan1 down 
   ifconfig vlan1 hw ether xx:xx:xx:xx:xx:xx 
   ifconfig vlan1 up 

Определить какой именно интерфейс нам нужен можно посмотрев в Status->Sys-Info в блоке "Router" запоминаем MAC адрес WAN интерефейса . Отдаём команду ifconfig и ищем vlan[0-9] у которого MAC совпадает с запомненым раньше :) именно этот интерфейс и нужно тормозить для смены MAC адреса нашего роутера.

Настраивать будем с использованием следующих параметров (для каждого отдельного случая могут различаться):

   Сеть: 192.168.100.0/24 
   IP адрес внутри сети: 192.168.100.243 
   Роутер для подсети: 192.168.100.1 
   Интерфейс в сеть: vlan1 
   Наша внутренняя сеть: 172.16.0.0/24 
   IP адрес нашего роутера: 172.16.0.1 

1. Настраиваем соединение PPPoE. Идём Setup->Basic setup выбираем в блоке "WAN Connection Type" , из выпадающего списка "Connection Type" выбираем "PPPoE" . Достаточно заполнить только поля "User Name" и "Password" , все остальные чекбоксы выставляем в Disabled ... Применяем настройки , если всё хорошо (надеюсь что хорошо) в статусе (в правом верхнем углу) WAN будет указывать на внешний IP адрес вида 94.243.х.х , если оно всё так :) значит у нас есть рабочее соединение с инетом ^_^ идём дальше .

2. Настраиваем локальную сеть. Дальше придётся шаманить из консоли (мне удобнее, т.к. нету задержки при исполнении команд, или идём в Administration->Commands) ... Чтобы выйти в локалку, необходимо получить плюшевый адрес, поэтому отдаём команды:

  • всё что ниже начиная со знака # есть комментарии , их вводить не надо.
   killall udhcpc #убиваем DHCP если оно есть 
   udhcpc -i vlan1 -p /var/run/udhcpc.pid -s /tmp/udhcpc #перезапускаем DHCP 
   ifconfig vlan1 #магия кончилась, если всё ок, то тут увидим наш адрес в локалке 

Всётаки немного магии как выясняется нужно, дело в том что на тестовом роутере не присваивался IP адрес через DHCP, выход из этого есть только один... как ни странно это статический IP адрес для интерфейса, который смотрит в лоеалюную сеть. Если у вас всё именно так придётся вводить статику... К примеру будем использовать 192.168.100.243 (адрес для каждого отдельного случая будет свой, этот я взял просто из великого рандома)... выполняем команды:

   ifconfig vlan1 down 
   ifconfig vlan1 192.168.100.243 netmask 255.255.255.0 
   ifconfig vlan1 up 

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

3. Настраиваем маршруты.

   route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.100.1 
   route add -net 10.0.2.0 netmask 255.255.255.0 gw 192.168.100.1 
   route add -net 79.173.126.0 netmask 255.255.255.0 gw 192.168.100.1 

4. Настраиваем NAT.

   iptables -A FORWARD -s 172.16.0.0/24 -j ACCEPT 
   iptables -A FORWARD -d 172.16.0.0/24 -j ACCEPT 
   iptables -t nat -A POSTROUTING -o vlan1 -s 172.16.0.0/24 -j MASQUERADE 

5. Загрузочный скрипт. Добавлять скрипты нужно в Administration->Commands .

Startup script Необходимо ввести в поле команд и нажать "Save Startup"

   ifconfig vlan1 down 
   ifconfig vlan1 hw ether xx:xx:xx:xx:xx:xx 
   ifconfig vlan1 up 
   sleep 10 
   ln -s /sbin/rc /tmp/udhcpc && udhcpc -i vlan1 -p /var/run/udhcpc.pid -s /tmp/udhcpc 
   route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.100.1 
   route add -net 10.0.2.0 netmask 255.255.255.0 gw 192.168.100.1 
   route add -net 79.173.126.0 netmask 255.255.255.0 gw 192.168.100.1 

Ниже альтернативный Startup Script , в случае со статическим IP адресом

   ifconfig vlan1 down 
   ifconfig vlan1 hw ether xx:xx:xx:xx:xx:xx 
   ifconfig vlan1 192.168.100.243 netmask 255.255.255.0 
   ifconfig vlan1 up 
   route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.100.1 
   route add -net 10.0.2.0 netmask 255.255.255.0 gw 192.168.100.1 
   route add -net 79.173.126.0 netmask 255.255.255.0 gw 192.168.100.1 

Firewall script Необходимо ввести в поле команд и нажать "Save Firewall"

   iptables -A FORWARD -s 172.16.0.0/24 -j ACCEPT 
   iptables -A FORWARD -d 172.16.0.0/24 -j ACCEPT 
   iptables -t nat -A POSTROUTING -o vlan1 -s 172.16.0.0/24 -j MASQUERADE 

К сожалению не всё так безоблачно в нашем мире и при сохранении скрипта для настройки файрвола роутер уходит в глубокий ребут , как лечить не знаю , но у меня получилось его сохранить только после того как я сохранил его в Custom Script ;) почему оно так я незнаю ...

6. Коментарии. Если все пункты выполнены нормально , то у вас рабочий роутер с DualAccess ;) При написании всего этого была использована одна бутылка пива "Asahi" и счастливый пользователь DIR-400 ;) в качестве бета-тестера настроек .

P.S. если вы всётаки дочитали до этого места , то открою страшную тайну ;) досточно выполнить шаг 5 и перезагрузить роутер ...

"Tweak"


Источник:

  1. http://forum.tktor.ru/index.php?t=838&o=0&st=0


Способ №:3

При статическом IP: На закладке WAN Setup выбираем PPTP и заполняем в соответствии с тем, что дал провайдер (IP-адрес / логин / пароль /адрес vpn сервеа)

Далее Administration --> Management --> Устанвить Cron в режим enable

Далее Administration --> Command и вбиваем скрипт в Startup примерно следующего содержания:

   #!/bin/sh
   mkdir -p /tmp/cron.d
   cat <<"ENDOFFILE" > /tmp/fix-pptp-settings.sh
   if [ "$1" = "--check" ];then
   if [ "$(nvram get wan_gateway)" != "XXX.XXX.XXX.XXX" ]; then
   while read param; do
   nvram set $param
   sleep 2
   done <<EOF
   wan_gateway=XXX.XXX.XXX.XXX
   wan_netmask=XXX.XXX.XXX.XXX
   wan_ipaddr=XXX.XXX.XXX.XXX
   EOF
   fi
   elif [ "$1" = "--daemon" ];then
   while true; do
   $0 --check
   sleep 60
   done
   fi
   ENDOFFILE
   chmod 700 /tmp/fix-pptp-settings.sh
   sh -c "/tmp/fix-pptp-settings.sh --daemon &"

Естественно не забыть поставить вместо XXX.XXX.XXX.XXX свои значения ip-адреса, маски и шлюза.

Данный скрипт будет запускаться по cron'у раз в минуту и при отвале VPN cкрипт установит все значения на заданные, чтобы снова подключиться через vpn.


Источник:

  1. http://www.e1.ru/talk/forum/read.php?f=27&i=171067&t=171067