Как стать автором
Обновить

Всегда получаем «белый» IP от Ростелеком с помощью OpenWrt

Уже два года как Ростелеком выдает абонентам адреса из диапазона 100.64.0.0/10, описанные в RFC 6598. Но при этом выдает не всегда. Не знаю, как именно назначается адрес, но на практике при подключении есть приличный шанс оказаться не в провайдерском NAT, а получить белый IP. При этом PPPoE соединение провайдер разрывает через сутки, поэтому один раз получить адрес и долго использовать его не выйдет. Напрашивается простой скрипт, который проверял бы адрес на принадлежность 100.64.0.0/10 и переподключал PPPoE, если адрес принадлежал подсети.

В OpenWrt каждый раз, когда интерфейс поднимается/опускается в алфавитном порядке выполняются скрипты в /etc/hotplug.d/iface/. Скрипту передаются три переменные:

  • ACTION — ifup или ifdown, при подключении/отключении соответственно
  • INTERFACE — название виртуального (логического) интерфейса (т.е. wan или ppp0)
  • DEVICE — название физического интерфейса (т.е. eth0.1 или br-lan)

Подробнее здесь. Создаем файл, например, /etc/hotplug.d/iface/26-grey (цифра означает порядок запуска) со следующим содержимым:

#!/bin/sh

if [ "$ACTION" = "ifup" -a "$INTERFACE" = "wan" ]; then     #проверяем событие и название интерфейса

. /lib/functions/network.sh; network_get_ipaddr ip wan     #получаем адрес интерфейса, адрес передается в переменную ip
_ip=$(echo $ip | grep -v -E "(^100\.6[4-9]\.|^100\.[7-9][0-9]\.|^100\.1[0-1][0-9]\.|^100\.12[0-7]\.)") #проверяем адрес на принадлежность диапазону 100.64.0.0/10
[ -z "$_ip" ]  && logger -t grey_ip "Reloading wan due grey IP - $ip" && ifup wan #переподключаем интерфейс wan, пишем в syslog
fi
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.