DHCP + PPTP on WAN
- 
 Hi, i'm not using pfsense so wasn't on the forum, but saw this thread so: ncat, i think you mixed changes made to two different code branches. 
 The changes i made were mostly before the merge from gnhb branch (pages ~4 and such in that thread),
 and made on the 2.0 BETA. they are mostly irrelevant now, as gnhb merged the code later and made a gui
 http://forum.pfsense.org/index.php/topic,25465.msg180054.html#msg180054
- 
 Micky, thx for post. I'll check the information 
- 
 ncat, спасибо за проделаную работу! 
 Сделал все как было указано - поднялось с первого раза )
 Пробую опять вернуться на пфсенс - отпишусь сколько проработает в таком режиме без проблем.
- 
 Для версии 2.1 pfsense не подходят скрипты от ncat, нужно что то другое, разработчики что то там наваяли другое. Интернет от билайна теперь вообще не хочет запускаться. 
- 
 Для версии 2.1 pfsense не подходят скрипты от ncat, нужно что то другое, разработчики что то там наваяли другое. Интернет от билайна теперь вообще не хочет запускаться. Я пока не ставил, и, думаю что не стоит торопиться. Почитаю отзывы, подожду фиксов (2.1.1). Для Вас решение простое - откатиться назад ;) бэкап, надеюсь, сделали? 
 А может они сделали так что теперь Билайн работает без костылей?Вообще, конечно, интересно поэкспериментировать надеюсь будет время. 
- 
 В 2.1 Release WAN_DHCP+L2TP поднимается после падения линка само, без скриптов. Неделя полёт нормальный. 
 Зато других глюков добавили - не принимает ICMP на L2TP интерфейс, тоесть пинговать извне не получается, rules никакие не помогают, при этом NAT работает :)
- 
 2.1 Обновился 
 dhcp+pptp
 Стояла 2,0 все работало, правда с реконектом были проблемы
 Настройка такова ВАН-дхцп опт1 на вани там пптп
 Все тоже в 2,1 лыжи не едут, захочет подключится, захочет нет….
 Такое чувство что подключается не через ВАН, а через ХЗ
 Подскажите что делать? Реконект важен....После обновы сбросил в заводские. 
- 
 немного разобрался, конектится он через дефолтный гетвей, потому при его смене перестает все работать, ну и по прежнему при старте нет конекта, надо пинать кнопкой, после этого реконект есть, проверено высовыванием кабеля, вроде как еще есть плавающая проблема, с реконектом, но это нужно подтвердить еще…. 
 Какую версию поставить для ставить для стабильного конекта?????
- 
 на 2.0 костыль использовали для pptp? 
- 
 Щас тупо откатил на 2.0 RC3 закинув через вебморду, работает, реконекты не проверял, но после перезагрузки завелось само… 
 Костыли никогда не использовал. и так работало.... Правда не всегда хорошо :)
 Версия i386
 К слову х64 когда-то ставил, недопилы в дровах там были....
- 
 Коллеги, подскажите, какая сейчас ситуация с l2tp поверх dhcp для Beeline? 
 У меня не поднимается l2tp ((
 Мои настройки:
 Interfaces:WAN
 Enable: Enanable Interface
 Description:WAN
 IPv4 Configuration Type: DHCP
 IPv6 Configuration Type: None
 Остальные параметры не менял
 Interface: LAN
 Enable: Enanable Interface
 Description:LAN
 IPv4 Configuration Type: Static IPv4
 IPv6 Configuration Type: None
 IPv4 address: 192.168.20.100/24
 Остальные параметры не менял
 Interfaces: PPP
 Link Type: L2TP
 Link Interfaces: WAN
 Description: Beeline
 Username: 089xxxxxxx
 Password: xxxxxxxxxxxx
 Local IP(em1): 9x.xxx.xxx.xxx (у меня статика). Почему маска 32 недоступна?
 Remote IP address: 85.21.0.255 (tp.internet.beeline.ru)
 Interfaces: OPT1
 Enable: Enanable Interface
 Description:OPT1
 IPv4 Configuration Type: L2TP
 IPv6 Configuration Type: None
 Username:089xxxxxxxxxx
 Password:xxxxxxxxxx
 Local IP address: 9x.xxx.xxx.xxx (у меня статика). Почему маска 32 недоступна?
 Remote IP address: 85.21.0.255 (tp.internet.beeline.ru)
 Enable-on-Demand mode: yes
 Idle timeout: 15
 Interfaces: Assign network ports
 WAN - em1
 LAN - em0
 OP1 - l2tp0(wan) - Beelineifconfig выдает ppp0: 
 inet addr: 9x.xxx.xxx.xxx P-t-P:85.21.0.255 Mask:255.255.255.255
- 
 А поискать - не судьба? https://www.google.com.ua/search?client=opera&q=Beeline+pfsense http://forum.pfsense.org/index.php/topic,64367.15.html 
- 
 @werter 
 Спасибо за гугловую ссылку, она он очень помогает. Я переформулирую вопрос: До сих пор нужно все допиливать, что описано в этой ветки? (просто сейчас версия 2.1, и прошло уже достаточно времени со времен постов)
- 
 Просто у вас провайдер "чудесный". Pfsense тут ни при чем. 
- 
 Здравствуйте! Я вот недавно по совету коллеги решил на pfSense перейти(канал не качает RT-N16) и сижу дома на том самом чудесном провайдере Билайн. Еще в пору WL500GpV2 и RT-N16 приходилось бороться(писать скрипт в Крон) с его чудными замутами с tp.internet.beeline.ru и сменой айпишника без дропа PPPTP(при переходе на l2tp такая беда почти пропала). Но на pfSense - это просто чума какая то! Пробовал местный солюшен с правкой /etc/inc/interfaces.inc и скриптами в Крон - хрен там. Не пашет! Последил nslookup-ом в течение двух вечеров что делается на tp.internet.beeline.ru - он с переодичностью в ~30мин - 2ч полностью меняет пару айпишников гейтов(по двум DNS у меня приходят). Я пробовал менять на "протухший" айпи в интерфейсе Opt1(l2tp0) из какой то предыдущей пары при совершенно иной другой паре IP - работает до какого то момента и после очередной смены как то все падает. В итоге я решил так попробовать сделать(пока самый простой вариант) решения проблемы "протухания" гейта: 
 в Cron добавил команду(берет первый IP гейта из пары, соотвественно самый "быстрый"):
 nslookup tp.internet.beeline.ru | grep "Address: " -m 1 | grep "ddress: " | cut -d : -f 2 | cut -c 2-13 >/tmp/l2tp0_routerс настройкой времени запуска minute: */1 и всеми остальными *, пока тестирую - все живет и не падает. с переодичностью 1 минуту меняется IP(или не меняется если текущий гейт "шустрее") в gateway на интерфейсе OPT1(l2tp0), связь не рвется. При этом в настройках l2tp прописан прямой IP одного из гейтов(самый "частый" по наблюдениям). Такой вариант кто то пробовал? Это я до Плацебо додумался или это какое то реальное решение? UPD спустя сутки мониторинга: роутер без дропов, падений физ-линка, l2tp прожил сутки. При этом я извне периодически смотрел какой IP у Gateway на l2tp - пару раз менялись пары, но ни разу не прерывалось. Кажется проблема с гейтами решена без особого куроченья файлов системы. 
- 
 2 NailMan Спасибо! Если неделю не будет проблем - это еще одно решение в "борьбе" с Пчелайном. P.s. (канал не качает RT-N16) Советую взглянуть на прошивку Tomato - http://tomato.groov.pl/ 
 Описание прошивки - http://www.bxtra.net/articles/2012-12-23/how-to-flash-tomatousb-by-shibby-on-asus-rt-n12-b1c1-wireless-n-routerВаша будет по адресу - http://tomato.groov.pl/download/K26/build5x-115-EN/tomato-K26USB-1.28.RT-MIPSR2-115-AIO.trx P.s. Есть ньюанс в настройке Dual\Russian , но могу подсказать как решить: 1. В веб-морде на WAN настраиваете L2TP. 
 2. С помощью скриптов настраивате "серый" адрес на WAN и маршрутизацию (подставляйте свои данные!) :Firewall: 
 iptables -A POSTROUTING -t nat -o vlan1 -j SNAT –to-source 172.25.83.245
 ip route change 172.25.0.0/16 dev vlan1 via 172.25.83.1WAN UP: 
 ifconfig vlan1 172.25.83.245 netmask 255.255.255.0
 route add -net 172.25.0.0 netmask 255.255.0.0 gw 172.25.83.1vlan1 - WAN-интерфейс (у вас он может называться на роутере по-другому - команда ifconfig покажет) 172.25.83.245 - заменить на свой локальный IP 172.25.0.0 netmask 255.255.0.0 - заменить на адрес(-а) сети(-ей) и подсети(-ей) вашего провайдера 172.25.83.1 - заменить на адрес вашего локального шлюза И не забываем отключить "Предотвращать DNS-атаки" - блокирует впн и торрент. 
- 
 2 NailMan Спасибо! Если неделю не будет проблем - это еще одно решение в "борьбе" с Пчелайном. Рано я радовался :( , проблемы не решены полностью таким простым способом. Смену гейтов на l2tp0 мой фокус позволяет побороть, но периодически физический WAN "теряет" оба DNS-сервера и все встает в клин. Вот как раз пока я сегодня на работу ехал, оно отвалилось от WAN. Вчера тоже самое случилось когда я был дома. Успел сохранить лог чтобы покопаться в ситуации. Надо сделать скриптик и отслеживать наличие DNS на WAN порту, если не нашлись - делаем WAN down/up. Примерно похоже я на линуксе на wl500/n16 делал, только я там получал IP своего DDNS-домена и если он был отличен от того что реально на L2TP порту то физзинк линк перезапускался. Вечером попробую воплотить скриптик. 
- 
 Итак, потестировал несколько дней, нарвался на сброс DNS на физическом WAN, подробно проанализировал ситуацию с интерфейсами и адресами и с радостью оттестировал два скрипта(пришлось кой чего подправить). Прошу не пинать - я не линуксоид и тем более не фришник. Давным давно программировал на дельфях, потому может покажется не красиво и неоптимально. Вот что вышло у меня для решения проблем с линком на Билайне. Делаем 2 скрипта и добавляем их в Крон: 
 1. Патчинг gatways для L2TP. Я разместил его в /root/etc/watch_gw.sh#!/bin/sh nslookup tp.internet.beeline.ru | grep "Address: " -m 1 | grep "ddress: " | cut -d : -f 2 | cut -c 2-13 >/tmp/l2tp0_router nslookup tp.internet.beeline.ru | grep "Address: " -m 2 | grep "ddress: " | cut -d : -f 2 | cut -c 2-13 >/tmp/l2tp0_defaultgwгде первый из полученный адресов засунется в /tmp/l2tp0_router (как я понял это адрес шлюза), второй засунется в дефолтный шлюз( вчем между ними разница я не знаю, допирал интуитивно) В Кроне он запускается раз в минуту, т.е. minutes = */1, остальное * 2. следилка за WAN. Проверяет поднят ли WAN(если нет, стартует его и l2tp вслед за ним[код использовал частично из местного солюшена]), если поднят, то проверяет наличие записей в /etc/resolv.conf и если там 2 строки - первая домен и вторая это адрес локалхоста, то гасит и подымает wan и стартует L2TP. После делает тоже самое что и watch_gw.sh (на всяк пожарный). размещается в /root/etc/watch_dns.sh #!/bin/sh wanisup=$(ifconfig ue0 | grep "UP" | cut -d "<" -f 2 | cut -d "," -f 1) if [ -z $wanisup ]; then ifconfig ue0 down sleep 5 ifconfig ue0 up sleep 10 if [ -f /var/run/l2tp_opt1.pid ] then # If l2tp connection is down (no IP) and mpd5 for this connection is running we kill mpd # to be able to change connection settings, specifically l2tp peer. # Because if (for example) l2tp peer is down we can get different l2tp peer IP using hostname. res2=$(cat /var/run/l2tp_opt1.pid) echo "l2tp is down - killing mpd5" | logger echo `date` "l2tp is down - killing mpd5" >>/tmp/watch_dns.log kill $res2 fi echo "restart l2tp by mpd5" | logger echo "restart l2tp by mpd5" >>/tmp/watch_dns.log /usr/local/sbin/mpd5 -b -k -d /var/etc -f mpd_opt1.conf -p /var/run/l2tp_opt1.pid -s ppp l2tpclient sleep 10 else dns=$(wc -l /etc/resolv.conf | cut -d ' ' -f 8) dnsip=$(cat /etc/resolv.conf | grep "nameserver " | cut -d ' ' -f 2) if [ "$dns" == "2" ] && [ "$dnsip" == "127.0.0.1" ]; then ifconfig ue0 down sleep 5 ifconfig ue0 up sleep 10 if [ -f /var/run/l2tp_opt1.pid ] then # If l2tp connection is down (no IP) and mpd5 for this connection is running we kill mpd # to be able to change connection settings, specifically l2tp peer. # Because if (for example) l2tp peer is down we can get different l2tp peer IP using hostname. res2=$(cat /var/run/l2tp_opt1.pid) echo "l2tp is down - killing mpd5" | logger echo `date` "l2tp is down - killing mpd5" >>/tmp/watch_dns.log kill $res2 fi echo "restart l2tp by mpd5" | logger echo "restart l2tp by mpd5" >>/tmp/watch_dns.log /usr/local/sbin/mpd5 -b -k -d /var/etc -f mpd_opt1.conf -p /var/run/l2tp_opt1.pid -s ppp l2tpclient sleep 10 fi nslookup tp.internet.beeline.ru | grep "Address: " -m 1 | grep "ddress: " | cut -d : -f 2 | cut -c 2-13 >/tmp/l2tp0_router nslookup tp.internet.beeline.ru | grep "Address: " -m 2 | grep "ddress: " | cut -d : -f 2 | cut -c 2-13 >/tmp/l2tp0_defaultgw fiСоответственно ue0 - в данном случае мой физический WAN, L2tp на OPT1 В Кроне отрабатывается раз в 2 мин, соотвественно minutes */2 Итог работы - отследился и сбросился-поднялся физлинк и за ним L2TP при ситуации "пропадания" DNS-ов, и постоянно "держится на пульсе" гейвей. С первым скриптом не падало подряд 3 дня. Сейчас будет не падать постоянно. Вот как то так. ДА! Релиз у меня 2.1-RELEASE (i386) если это важно. 
- 
 2 NailMan 
 Еще раз выражаю благодарность.
 Вот уж действительно полезный пост.
- 
 2 NailMan 
 Еще раз выражаю благодарность.
 Вот уж действительно полезный пост.Да не зачто, просто думаю много людей мучалось с этим провайдером и pfsense и перешло на что то другое. Почему то тот солюшен совсем у меня не заработал. Просто я бы сказал рушил всю систему работы с интерфейсами. Судя по файлу interfaces.inc в солюшене версия pfsense старей текущей 2.1 и что то не совмещается с чем то. Я нашел очень много отличий пока пробовал встроить в свой pfsense. Потому вариант с раскурочиванием системы не вариант или вариант под конкретную версию. Я не люблю такого, всегда предпочитал универсальность. Итак маленький апдейт сделал скрипта-следилки за dns/wan. Еще одна проблема с "Корбайном" нашлась - они сбрасывают DHCP IP на WAN, но при этом в resolv.conf не удаляются сервера dns. Предыдущий скрипт этой ситуации не ловил(ее и не случалось прежде). Потому добавил детектинг того что IP ушел, а nameserver-ы остались, ну и down/up им делаю. #!/bin/sh wanisup=$(ifconfig ue0 | grep "UP" | cut -d "<" -f 2 | cut -d "," -f 1) # echo "$wanisup" if [ "$wanisup" != "UP" ] then echo `date` "WAN interface is down, up it!" >>/tmp/watch_dns.log echo "WAN interface is down, up it!" | logger # echo "WAN interface is down, up it!" ifconfig ue0 up sleep 10 if [ -f /var/run/l2tp_opt1.pid ] then # If l2tp connection is down (no IP) and mpd5 for this connection is running we kill mpd # to be able to change connection settings, specifically l2tp peer. # Because if (for example) l2tp peer is down we can get different l2tp peer IP using hostname. res2=$(cat /var/run/l2tp_opt1.pid) echo "l2tp is down - killing mpd5" >>/tmp/watch_dns.log echo "l2tp is down - killing mpd5" | logger # echo "l2tp is down - killing mpd5" kill $res2 fi echo "restart l2tp by mpd5" >>/tmp/watch_dns.log echo "restart l2tp by mpd5" | logger # echo "restart l2tp by mpd5" /usr/local/sbin/mpd5 -b -k -d /var/etc -f mpd_opt1.conf -p /var/run/l2tp_opt1.pid -s ppp l2tpclient else #if have no WAN ip and nameservers in /etc/resolv.conf present or noit present waniptype=$(ifconfig ue0 | grep inet | cut -d " " -f 1 | cut -c 2-6) # echo "$waniptype" if [ "$waniptype" == "inet6" ] then echo `date` "No WAN IP present! Restart WAN interface" >>/tmp/watch_dns.log echo "No WAN IP present! Restart WAN interface" | logger # echo "No WAN IP present! Restart WAN interface" ifconfig ue0 down echo "WAN interface down..." >>/tmp/watch_dns.log echo "WAN interface down..." | logger # echo "WAN interface down..." ifconfig ue0 up sleep 10 echo "WAN interface up..." >>/tmp/watch_dns.log echo "WAN interface up..." | logger # echo "WAN interface up..." if [ -f /var/run/l2tp_opt1.pid ] then # If l2tp connection is down (no IP) and mpd5 for this connection is running we kill mpd # to be able to change connection settings, specifically l2tp peer. # Because if (for example) l2tp peer is down we can get different l2tp peer IP using hostname. res2=$(cat /var/run/l2tp_opt1.pid) echo "l2tp is down - killing mpd5" >>/tmp/watch_dns.log echo "l2tp is down - killing mpd5" | logger # echo "l2tp is down - killing mpd5" kill $res2 fi echo "restart l2tp by mpd5" >>/tmp/watch_dns.log echo "restart l2tp by mpd5" | logger # echo "restart l2tp by mpd5" /usr/local/sbin/mpd5 -b -k -d /var/etc -f mpd_opt1.conf -p /var/run/l2tp_opt1.pid -s ppp l2tpclient else #if WAN ip is present and nameservers is lost dns=$(wc -l /etc/resolv.conf | cut -d ' ' -f 8) dnsip=$(cat /etc/resolv.conf | grep "nameserver " | cut -d ' ' -f 2) if [ "$dns" == "2" ] && [ "$dnsip" == "127.0.0.1" ] then ifconfig ue0 down echo "WAN interface down..." >>/tmp/watch_dns.log echo "WAN interface down..." | logger # echo "WAN interface down..." ifconfig ue0 up sleep 10 echo "WAN interface up..." >>/tmp/watch_dns.log echo "WAN interface up..." | logger # echo "WAN interface up..." if [ -f /var/run/l2tp_opt1.pid ] then # If l2tp connection is down (no IP) and mpd5 for this connection is running we kill mpd # to be able to change connection settings, specifically l2tp peer. # Because if (for example) l2tp peer is down we can get different l2tp peer IP using hostname. res2=$(cat /var/run/l2tp_opt1.pid) echo "l2tp is down - killing mpd5" >>/tmp/watch_dns.log echo "l2tp is down - killing mpd5" | logger # echo "l2tp is down - killing mpd5" kill $res2 fi echo "restart l2tp by mpd5" >>/tmp/watch_dns.log echo "restart l2tp by mpd5" | logger # echo "restart l2tp by mpd5" /usr/local/sbin/mpd5 -b -k -d /var/etc -f mpd_opt1.conf -p /var/run/l2tp_opt1.pid -s ppp l2tpclient fi fi fiПлюс оба скрипта я в Кроне раз в минуту запускаю. По статистике(по логу /tmp/watch_dns.log) игра с DNS/WAN IP у Билайна случается раз 5-6 в сутки и скрипт их успешно отрабатывает. Да, изнутри в это время падает инет, ничего тут не поделаешь. Но пока эту хрень в pfSense не пофиксили, придется костылями довольстоваться. Кстати на Линукс-роутерах это как то ловится в основной массе, но вот с ситуацией когда WAN IP теряется они не справлялись у меня самостоятельно. 
