Настройка роутера с DD-WRT в режиме Dual Access PPoE, если провайдер для своей локальной сети использует DHCP, а подключение к интернету с использованием PPPoE.
Все описанное ниже подразумевает, что пользователь умеет пользоваться программным обеспечением (TELNET), ПК настроен на локальную сеть устройства (роутер). Роутер имеет адрес 192.168.130.1 маска 255.255.255.0.
При данной настройки получаем поднятый сетевой интерфейс с IP адресом на WAN порт устройства (полученный с помощью DHCP), тем самым получая доступ к ресурсам локальной сети провайдера. Какие есть сетевые интерфейсы на устройстве и какую мнемонику они имеют. Подключимся с помощью TELNET на устройство с именем "root" пароль как для доступа к WEB и наберем команду ниже для просмотра сетевых интерфейсов:
root@My-Fan:~# ifconfig
br0 Link encap:Ethernet HWaddr 00:0C:43:х:х:77
inet addr:192.168.130.1 Bcast:192.168.130.255 Mask:255.255.255.0
eth2 Link encap:Ethernet HWaddr 00:0C:43:х:х:77
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
ra0 Link encap:Ethernet HWaddr 00:0C:43:х:х:88
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
vlan1 Link encap:Ethernet HWaddr 00:0C:43:х:х:77
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
vlan2 Link encap:Ethernet HWaddr y:y:y:y:y:y
inet addr:10.х.х.х Bcast:10.х.х.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1460 Metric:1
root@My-Fan:~#
|
Где имена сетевых интерфейсов :
- br0 мост объединяющий локальную
сеть устройства (vlan1) и его wi-fi (ra0)
- eth2 общий сетевой интерфейс
- ra0 wi-fi
- vlan1 порты LAN1-LAN4
- vlan2 порт WAN
192.168.130.1 IP адрес
устройства, согласно его настройки прописанные в Router IP, с маской
255.255.255.0 установленный в разделе "Setup" - "Basic
Setup" - окно "Network Setup", адрес
192.168.130.100 IP адрес
локального шлюза, который находиться в локальной сети устройства и ни какого
отношения к текущему провайдеру не имеет. Обращаю внимание, что имена сетевых
интерфейсов зависят от того на каком чипе данный роутер изготовлен. Данная
мнемоника относится к роутерам на базе Ralink.
Запущенный сервис "udhcpc" отвечает за то, чтоб сетевом интерфейсе на "vlan2"
был получен IP от провайдера по DHCP.
root@My-Fan:~# ps | grep udhcpc
2605 root 796 S udhcpc -i vlan2 -p /var/run/udhcpc.pid -s /tmp/udhcpc -H My-Fan
root@My-Fan:~#
|
Маршрут по умолчанию в данном случае имеем на шлюз провайдера, строка
root@My-Fan:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.х.х.1 0.0.0.0 UG 0 0 0 vlan2
10.х.х.0 * 255.255.255.0 U 0 0 0 vlan2
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
192.168.130.0 * 255.255.255.0 U 0 0 0 br0
root@My-Fan:~#
|
Второй
этап, поднятие соединения "PPPoE" для доступа в интернет через нашего
провайдера, который будет настрачивать так сказать ручным способом нам
необходим файл конфигурации "options.pppoe", который будет использоваться
запущенным сервисом pppd командой "pppd file /tmp/ppp/options.pppoe"
используем для этого режим настройки через WEB интерфейс нашего устройства
введя адрес 192.168.130.1/Diagnostics.asp
попав на нужную нам страницу введем текст который ниже в "Command Shell"
и нажав потом кнопку "Save Startup":
echo -e
"plugin /usr/lib/rp-pppoe.so
nic-vlan2
noccp
nomppc
noipdefault
noauth
defaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
usepeerdns
user 'user'
password 'password'
default-asyncmap
mtu 1492
mru 1492
persist
lcp-echo-interval
3
lcp-echo-failure
20
">/tmp/ppp/options.pppoe
pppd file /tmp/ppp/options.pppoe &
Где требуют пояснения некоторые строчки
nic-vlan2 - vlan2 это WAN порт на данном устройстве, может иметь другую мнемонику;
user 'user' - имя пользователя;
password 'password' - пароль пользователя;
">/tmp/ppp/options.pppoe - запись в файл options.pppoe;
Для
записи "Startup" скрипта - скрипт
"автозапуска" на устройстве воспользоваться кнопкой с надписью “Save Startup”. Данный скрипт будет
отработан всегда при перезагрузке устройства, как раз удобен нам для ввода
некоторых изменений. В результате должны получить окно которое имеет следующий вид.
Теперь
перезапустим устройство, в результате проделанной работы через некоторое время
должны будем получить поднятый сетевой интерфейс с именем "ppp0" для
работы с интернет. Для проверки наших утверждений воспользуемся следующими
командами "ifconfig" и "ps":
root@My-Fan:~# ifconfig
br0 Link encap:Ethernet HWaddr 00:0C:43:х:х:77
inet addr:192.168.130.1 Bcast:192.168.130.255 Mask:255.255.255.0
eth2 Link encap:Ethernet HWaddr 00:0C:43:х:х:77
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
ppp0 Link encap:Point-to-Point Protocol
inet addr:31.х.х.4 P-t-P:84.х.х.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1460 Metric:1
ra0 Link encap:Ethernet HWaddr 00:0C:43:х:х:88
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
vlan1 Link encap:Ethernet HWaddr 00:0C:43:х:х:77
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
vlan2 Link encap:Ethernet HWaddr y:y:y:y:y:y
inet addr:10.х.х.х Bcast:10.х.х.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1460 Metric:1
root@My-Fan:~# ps | grep pppd
2943 root 1604 S pppd file /tmp/ppp/options.pppoe
root@My-Fan:~#
|
Если этого не получилось то возможно где-то допущена ошибка, еще раз проверить и повторить. Данная запись c ppp0 говорит нам, что данный сетевой интерфейс имеет IP адрес 31.х.х.4 и следующий за ним запись P-t-P:84.x.x.5 говорит нам об IP адресе шлюза.
Третье. Так как данная настройка для PPPoE соединения с провайдером для выхода в интернет происходит в ручную, то нам необходимо добавить запись c использованием команды iptables :
Третье. Так как данная настройка для PPPoE соединения с провайдером для выхода в интернет происходит в ручную, то нам необходимо добавить запись c использованием команды iptables :
iptables -t nat -A POSTROUTING -s 192.168.130.0/24 -o ppp0 -j SNAT --to-source [полученный_IP_адрес]
где в поле [полученный_IP_адрес] поставим нужный нам адрес, который мы видели ранее через "ifconfig" - inet addr:31.х.х.4 , а именно 31.х.х.4 (в место "x" должны стоять цифры, например 31.31.131.4)
ppp0 Link encap:Point-to-Point Protocol
inet addr:31.х.х.4 P-t-P:84.х.х.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1460 Metric:1
|
Проверяем ввод команды "iptables" и полученную строчку :
root@My-Fan:~# iptables –t nat -nvL
Chain POSTROUTING (policy ACCEPT 111 packets, 10277 bytes)
pkts bytes target prot opt in out source destination
…
0 0 SNAT 0 -- * ppp0 192.168.130.0/24 0.0.0.0/0 to:31.28.195.24
…
root@My-Fan:~#
|
Последний штрих - это проверка маршрута по умолчанию, который должен указывать на нужный нам шлюз, в данном случае полученный при подключении "PPPoE" и указанный в интерфейсе "ppp0" . Проверим что у нас получилось на данном этапе с маршрутами по умолчанию, а именно то, что “default” указывает на шлюз локальной сети провайдера "gateway - 10.х.х.1", а нам необходимо на gateway - 84.х.х.5 , удалим текущий и создадим новый используя команду "route":
root@My-Fan:~# route –n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.х.х.1 0.0.0.0 UG 0 0 0 vlan2
10.х.х.0 * 255.255.255.0 U 0 0 0 vlan2
84.х.х.5 * 255.255.255.255 UH 0 0 0 ppp0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
169.254.0.0 * 255.255.0.0 U 0 0 0 br0
192.168.130.0 * 255.255.255.0 U 0 0 0 br0
root@My-Fan:~# route del default
root@My-Fan:~# route add default gw 84.х.х.5
root@My-Fan:~# route –n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 84.x.x.5 0.0.0.0 UG 0 0 0 ppp0
10.х.х.0 * 255.255.255.0 U 0 0 0 vlan2
84.х.х.5 * 255.255.255.255 UH 0 0 0 ppp0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
169.254.0.0 * 255.255.0.0 U 0 0 0 br0
192.168.130.0 * 255.255.255.0 U 0 0 0 br0
root@My-Fan:~#
|
Где IP адрес шлюза, который мы видели в команде "ifconfig" - позиция
P-t-P:84.х.х.5
P-t-P:84.х.х.5
ppp0 Link encap:Point-to-Point Protocol
inet addr:31.х.х.4 P-t-P:84.х.х.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1460 Metric:1
|
Теперь
нам осталось все описанное с автоматизировать для того чтоб наше устройство
(роутер) все делал сам без нашего участия. Нам необходим еще один второй скрипт, который
будет проверять наш поднятый "ppp0" и в случае его
отсутствия будет автоматически восстанавливать его. Текст данного скрипта ниже,
его необходимо прописать так же используя WEB интерфейс устройства 192.168.130.1/Diagnostics.asp в окне ввода команд, но нажав кнопку "Save Custom script":
#!/bin/sh
WANup_ppp0=`ifconfig | awk '/ppp0/ {print $1}'`
if [ "$WANup_ppp0" = "ppp0" ]; then
Wan_ip_addr_ppp=`ifconfig | grep 84.х. | awk '{print ($2)}' | awk -F: '{print ($2)}'`
Wan_ip_gw_ppp=`ifconfig | grep 84.х. | awk '{print ($3)}' | awk -F: '{print ($2)}'`
nvram set wan_gateway_buf="$Wan_ip_gw_ppp"
nvram set wan_ipaddr_buf="$Wan_ip_addr_ppp"
iptables -t nat -A POSTROUTING -s 192.168.130.0/24 -o ppp0 -j SNAT --to-source $Wan_ip_addr_ppp
route del default 2>/dev/null
route add default gw $Wan_ip_gw_ppp 2>/dev/null
exit;
else
if ["$(/usr/sbin/nvram get wan_gateway)" = ""]; then
iptables -t nat -D POSTROUTING -s 192.168.130.0/24 -o ppp0 -j SNAT --to-source $(/usr/sbin/nvram get wan_ipaddr_buf)
route del default 2>/dev/null
route add default gw $(/usr/sbin/nvram get wan_gateway) 2>/dev/null
nvram set wan_ipaddr_buf=""
exit
fi
fi
exit
|
Примечание,
в тексте не должно быть перенос, должно иметь вид как на картинке ниже. Где
поле grep 84.х. подразумевает первые два реальных числа в адресе
IP полученного от провайдера (то что показала
команда "ifconfig" , сетвеой
интерфейс "ppp0" поле P-t-P:84.х.х.5, например
"84.184").
После
вставки текста, нажать снизу кнопку с надписью “Save Custom Script”, в результате он будет
сохранен в окне “Custom Script”
и должен иметь следующий вид
Примечание
по скрипту, в переменные : wan_ipaddr_buf – полученный IP
от
провайдера для ppp0, wan_gateway_buf
– полученный шлюз от провайдера для интернет через ppp0. Перегружаем роутер, и
проверяем работоспособность данной настройки и работу в комплексе.
Комментариев нет:
Отправить комментарий