Важные моменты после перепрошивки роутера для новичков

Материал из Викиучебника — открытых книг для открытого мира

Введение[править]

Эта статья описывает советы и важные моменты для новичков, перепрошивших свой роутер[1] альтернативной прошивкой, такой как прошивка Олега или DD-WRT
Подробное описание как перепрошить роутер прошивкой Олега, описано в статье настройка роутера WL500g Premium
Все советы, изложенные в статье, предназначены для тех, кто настраивает свой роутер вручную через консоль с использованием ssh[2] или telnet[3] клиентов.

Первые шаги после перепрошивки[править]

Первым делом после перепрошивки роутера[1] следует помнить, что в прошивке зашит определенный MAC адрес[4], поэтому его надо обязательно поменять на какой-то другой, потому что есть очень большая вероятность того, что мы не единственные с перепрошитым роутером в нашей сети и следовательно, такой MAC адрес[4] уже может быть занят.

Назначить новый MAC адрес[4] можно следующей командой:

ifconfig vlanN hw ether 00:11:32:23:32:23

вместо vlanN, надо подставить интерфейс нужного провайдера, как правило если он один, то это vlan1.
Чтобы не мучаться с выбором MAC адреса[4], можно просто взять MAC адрес[4] сетевой карты любого компьютера в вашей домашней сети.

Тонкости настроки файрвола iptables[править]

При настройке файрвола iptables[5], важно помнить следующий момент: Если роутер[1] с Wi-Fi, то интерфейс сети - это br0, то есть мост это между сетевой картой и Wi-Fi точкой, а не просто eth0 или vlan0.

Описание скриптовых переменных для iptables[править]

WAN_IFACE - это интерфейс, который смотрит в интернет, если провайдер один, то это обычно vlan1 или ppp0 - если используется VPN соединение.
PORT_NUM - № порта[6]
LOCAL_SERVER_IP - IP адрес[7] сервера в нашей локальной сети, на который будут перенаправляться все пакеты идущие из интернета.
WAN_IP - Внешний IP адрес[7] провайдера.

Базовая настройка интернета для локальной сети[править]

Чтобы в нашей домашней сети был интернет надо выполнить следующие команды:

#Разрешить входящие пакеты из локальной сети
iptables -A INPUT -i WAN_IFACE -s 192.168.1.0/24 -j ACCEPT
#Разрешаем форвардинг уже инициализированных соединений
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

После этого надо сделать подмену адреса отправителя из локальной сети, на IP адрес[7] провайдера.
Это можно сделать 2-мя способами:

iptables -t nat -A POSTROUTING -o $WAN_IFACE -j MASQUERADE

или

iptables -t nat -A POSTROUTING -o $WAN_IFACE -s 0.0.0.0/0 -j SNAT --to-source $WAN_IP

Обычно в настройках по умолчанию используется способ №1.
В случае же если у вас VPN[8] соединение, то лучше использовать способ №2, он увеличивает скорость VPN соединений.

Описание переменных см. выше

Порт форвардинг[править]

Чтобы работал порт-форвардинг, надо отключить антиспуфинговую фильтрацию см. ниже.
А так же необходимо включить форвардинг пакетов, как правило он уже включен, но как говорится береженого бог бережет. См.ниже
Теперь можно открывать доступ к порту[6], который мы будем пробрасывать в нашу домашнюю сеть:

#Открываем порт для доступа из вне
iptables -A INPUT -i WAN_IFACE -p tcp --dport PORT_NUM -j ACCEPT
#Разрешаем дальнейшее следование по порту внутри сети
iptables -A FORWARD -i WAN_IFACE -p tcp --dport PORT_NUM -j ACCEPT
#Если пытаемся подключиться из локальной сети к внешнему IP с пробрасываемым портом, то делаем это от лица роутера
iptables -t nat -A POSTROUTING -d LOCAL_SERVER_IP -s 192.168.1.0/24 -p tcp --dport PORT_NUM -j SNAT --to-source 192.168.1.1
#Перенаправляем пакеты с внешнего адреса провайдера, на адрес в локальной сети по пробрасываеваему порту
iptables -t nat -A PREROUTING -d WAN_IP -p tcp --dport PORT_NUM -j DNAT --to-destination LOCAL_SERVER_IP:PORT_NUM
#Что-бы сам шлюз мог работать с пробрасываемым портом
iptables -t nat -A OUTPUT -d WAN_IP -p tcp --dport PORT_NUM -j DNAT --to-destination LOCAL_SERVER_IP

Описание переменных см. выше

Отключение антиспуфинговой фильтрации[править]

Если на роутере[1] планируется порт[6] форвардинг, то необходимо отключить rp_filter(антиспуфинговая фильтрация).
Это делается следующими командами:

echo 0 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter

Включение форвардинга пакетов[править]

Делается следующими командами:

echo 1 > /proc/sys/net/ipv4/ip_forward

Настройка таблиц маршрутизации для 2-х провайдеров с помощью пакета iproute2[править]

Подробная настройка 2-х провайдеров описана тут.

Описание скриптовых переменных для iproute2[править]

WAN1_IP - Внешний IP адрес[7] провайдера №1.
WAN1_GW - IP адрес[7] шлюза провайдера №1.
WAN2_IP - IP адрес[7] провайдера №2.
WAN2_GW - IP адрес[7] шлюза провайдера №2.
LAN_IFCE - Интерфейс сетевой карты, как правило br0 или vlan0.

Создание таблиц маршрутизации[править]

Это делается это следующим образом:

mkdir -p /etc/iproute2
echo "201 T1" > /etc/iproute2/rt_tables
echo "202 T2" >> /etc/iproute2/rt_tables

Рекомендую прописать эти строчки в post-boot, т.к. после рестарта, даже если сохранить flashfs, она не восстановится.

Распределение маршрутов по таблицам[править]

Теперь в таблицы T1 и T2 надо добавить следующие маршруты:

#Добавляем в таблицу Т1 шлюз по умолчанию, если у вас VPN соединение, то следующую строчку нужно закоментить
ip route add default via $WAN1_GW table T1
#Добавляем в таблицу Т1 информацию о нашей локальной сети
ip route add 192.168.1.0/24 dev $LAN_IFACE table T1
#Добавляем в таблицу Т1 информацию о самих себе
ip route add 127.0.0.0/8 dev lo table T1
#Добавляем в таблицу Т2 шлюз по умолчанию
ip route add default via $WAN2_GW table T2
#Добавляем в таблицу Т2 информацию о нашей локальной сети
ip route add 192.168.1.0/24 dev $LAN_IFACE table T2
#Добавляем в таблицу Т2 информацию о самих себе
ip route add 127.0.0.0/8 dev lo table T2
#Если у вас VPN соединение, то закоментарьте следующую строчку
ip route add default gw via $WAN1_GW
#Добавляем правило чтобы пакеты первого правайдера шли по его таблице Т1
ip rule add from $WAN1_IP table T1
#Добавляем правило чтобы пакеты второго правайдера шли по его таблице Т2
ip rule add from $WAN2_IP table T2
#Чистим за собой кэш маршрутов
ip route flush cache

* Если вы планируете порт-форвардинг по обоим провайдерам, тогда надо отключить антиспуфинговую фильтрацию

Описание переменных см. выше

Прочие советы[править]

  • Для удобства работы с роутером[1] рекомендую установить следующие пакеты:

Для установки дополнительных пакетов, вам понадобится флешка, а далеко не каждый роутер имеет USB[9] вход.

  • При написании скриптов, особенно для автозагрузки, не забывайте что переменная PATH инициализируется позже, чем выполнение скриптов автозагрузки, поэтому в скриптах надо писать полный путь до нужной программы. Это касается всех дополнительных пакетов, которые ставятся на флешку.

Примечания[править]

Ссылки[править]

Альтернативные прошивки:

Статьи по перепрошивке:



Статья не закончена и периодически дополняется