ВНИМАНИЕ!! ДАННАЯ СТАТЬЯ ПРЕДНАЗНАЧАЕТСЯ ТОЛЬКО ДЛЯ ОЗНАКОМЛЕНИЯ И АВТОР НЕ НЕСЕТ НИКАКОЙ ОТВЕТСВЕННОСТИ В СЛУЧАЕ ИСПОЛЬЗОВАНИЯ МАТЕРИАЛОВ ДАННОЙ СТАТЬИ
Приобрел на днях вай-фай роутер D-Link D-300 и решил его настроить для собственных нужд(поднятие 2-х соединений для интернета и гостевого доступа, управление всей подсетью). По умолчанию DIR-300 разрешает поднимать только одно pppoe соединение, но на помощь пришла прошивка DD-WRT. Прошивка роутера под ОС Windows производиться по инструкции, под ОС Linux необходимо настроить и запустить tftp сервер. В моем случае это был atftp. Устанавливаем оный при помощи #zypper in atftp.
После лезем в файл настройки /etc/sysconfig/atftpd и в ATFTPD_DIRECTORY указываем путь к папке, в которой у нас будут лежать необходимые файлы необходимые для прошивки(ap61.ram, ap61.rom,linux.bin, которые берем здесь для DIR-300), в моем случает - /srv/tftp. Запукаем сервер atftp
#/etc/atftpd start и прошиваем следуя инструкциям.
Данная прошивка позволяет также соединять две и более точки в беспроводную сеть по технологии WDS. Т.к. у меня модем "Промсвязь 200 А", который построен на базе ZTE zte w300, который тоже теоретически может участвовать в построении беспроводной сети по технологии WDS, были попытки соединить их посредством Wi-Fi, хотя оные не увенчались успехом(после знающие люди сказали что к сожалению "Промсвязь 200 А" не держит WDS). Но все таки можно расширить зону покрытия при помощи соединения модема и роутера посредством кабеля.
Для правильной работы необходимо перевести модем в режим моста.
И настроить dhcp(если оный будет использоваться) на дублирование с нашего роутера
Далее настраивается сам роутер. Для поднятия двух соединений необходимо в administration -> commands
ввести следующий текст
#!/bin/sh## VLAN - сетевой интерфейс, его можно посмотреть через ifconfig на роутере ##
VLAN="br0"
GUEST_PPP="ppp0"
INET_PPP="ppp1"
if [ ${VLAN} ]; then
ifconfig ${VLAN} up
sleep 1
else
exit
fi
## файл для настройки интернет соединения
echo "plugin /usr/lib/rp-pppoe.so
nic-${VLAN}
noccp
nomppc
noipdefault
noauth
defaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
user '№Договора@beltel.by'
password 'пароль'
default-asyncmap
mtu 1492
mru 1492
persist
maxfail 0
holdoff 30
unit 1
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 '№Договора@guest'
password 'пароль'
default-asyncmap
mtu 1492
mru 1492
persist
maxfail 0
holdoff 30
unit 0
lcp-echo-interval 10
lcp-echo-failure 5" > /tmp/guest.pppoe
## поднятие соединений
pppd file /tmp/guest.pppoe
sleep 5
pppd file /tmp/int.pppoe
sleep 5
## настройка для работы интернета в целом
## 192.168.100.48/28 - моя подсеть, 192.168.100.53 - мой IP
GUEST_IP="`ifconfig |grep ${GUEST_PPP} -A1 |grep -e addr:| awk '{print($2)}'| awk -F : '{print($2)}'`"
iptables -A FORWARD -t filter -i ${VLAN} -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -t filter -i ${GUEST_PPP} -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o ${GUEST_PPP} -s 192.168.100.48/28 -d 0/0 -j MASQUERADE
iptables -A FORWARD -t filter -i ${INET_PPP} -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o ${INET_PPP} -s 192.168.100.48/28 -d 0/0 -j MASQUERADE
### настройка для возможности качать с торрентов ( в даннмо случае udp:60881 и 60884, tcp: 60885)
iptables -t nat -A PREROUTING -p tcp -i ${GUEST_PPP} -d ${GUEST_IP} --dport 60885 -j DNAT --to-destination 192.168.100.53:60885
iptables -t nat -A PREROUTING -p udp -i ${GUEST_PPP} -d ${GUEST_IP} --dport 60881 -j DNAT --to-destination 192.168.100.53:60881
iptables -t nat -A PREROUTING -p udp -i ${GUEST_PPP} -d ${GUEST_IP} --dport 60884 -j DNAT --to-destination 192.168.100.53:60884
### Несмотря на наличие в настройках соединений default route - он все равно не сбрасывается
route del default
sleep 3
route add default ${INET_PPP}
sleep 3
## маршруты к гостевым ресурсам для минска, согласно батнику на FTP байфлая
route add -net 86.57.151.0 netmask 255.255.255.224 ${GUEST_PPP}
route add -host 86.57.251.28 ${GUEST_PPP}
route add -host 86.57.253.1 ${GUEST_PPP}
route add -host 86.57.253.1 ${GUEST_PPP}
route add -host 193.232.248.79 ${GUEST_PPP}
route add -host 193.232.248.80 ${GUEST_PPP}
route add -host 82.209.245.151 ${GUEST_PPP}
route add -host 194.158.206.240 ${GUEST_PPP}
route add -host 194.158.206.241 ${GUEST_PPP}
route add -host 194.158.206.246 ${GUEST_PPP}
route add -host 194.158.202.59 ${GUEST_PPP}
route add -host 82.209.195.15 ${GUEST_PPP}
route add -net 86.57.250.0 netmask 255.255.254.0 ${GUEST_PPP}
route add -net 86.57.246.0 netmask 255.255.255.0 ${GUEST_PPP}
route add -net 93.84.112.0 netmask 255.255.248.0 ${GUEST_PPP}
route add -net 178.124.128.0 netmask 255.255.248.0 ${GUEST_PPP}
route add -net 91.149.189.0 netmask 255.255.255.128 ${GUEST_PPP}
route add -net 91.149.189.128 netmask 255.255.255.192 ${GUEST_PPP}
route add -net 93.125.53.0 netmask 255.255.255.0 ${GUEST_PPP}
route add -net 178.172.148.0 netmask 255.255.255.0 ${GUEST_PPP}
route add -net 91.149.157.0 netmask 255.255.255.128 ${GUEST_PPP}
route add -net 91.149.157.192 netmask 255.255.255.192 ${GUEST_PPP}
route add -net 93.125.30.0 netmask 255.255.254.0 ${GUEST_PPP}
route add -host 194.158.199.177 ${GUEST_PPP}
route add -host 82.209.240.241 ${GUEST_PPP}
route add -host 82.209.243.241 ${GUEST_PPP}
И нажать на кнопку save startup, после чего - перезагрузить роутер(мин 5 ему на это потребуется)
После данных манипуляций работает и гость и платник.
UPD: Для просмотра IPTV от Zala.by при подключении приставки к нашему dir-300 необходимо в загрузочный скрипт добавить
iptables -t nat -A PREROUTING -m mac --mac-source хх:хх:хх:хх:хх:хх -j DNAT --to-destination 192.168.100.50
где хх:хх:хх:хх:хх:хх - мак адрес нашей приставки(указан в договоре), 192.168.100.50 - адрес нашего модема. Вроде все должно при этом работать, но при включении IPTV - пропадает интернет и вешается маршрутизатор, а при длительном просмотре - отваливается интернет соединение и вовсе - так что все равно придется подключать приставку от IPTV напрямую к модему.
Upd: обновленная версия скрипта запуска лежит здесь