Использование малины Pi в качестве маршрутизатора?

Кто-нибудь использовал свою малину Pi в качестве устройства маршрутизации?

В основном я хочу использовать его для мониторинга своей сети, и было бы здорово, если бы он имел вход и выход для Ethernet, но это не так, поэтому мне интересно, очень ли эффективно контролировать сеть, Ethernet, а затем с помощью USB-ключа в качестве маршрутизатора Wi-Fi. Кто-нибудь сделал что-нибудь подобное? Это сильно замедляет интернет?

48 голосов | спросил clifgray 29 AMpMon, 29 Apr 2013 10:23:16 +040023Monday 2013, 10:23:16

5 ответов


30

Я использую свою модель B как маршрутизатор с формированием трафика, используя только один порт Ethernet, с которым он поставляется. Вот как быстро и грязно:

  1. Включить переадресацию IPv4 , поэтому ваш Pi действует как маршрутизатор, перенаправляя любой трафик, который он получает.
  2. Настройте свой Pi со статической конфигурацией сети, чтобы на него не повлияли изменения DHCP, предложенные ниже. Вот содержание моего /etc /network /interfaces в качестве ссылки:

    # pi @ flux: /home /pi /projects /adsl /rrdlogger (master *)
    # cat /etc /network /interfaces
    auto lo
    
    iface lo inet loopback
    #iface eth0 inet dhcp
    iface eth0 inet static
            адрес 192.168.1.1
            netemask 255.255.255.0
            шлюз 192.168.1.254 # IP моего маршрутизатора ADSL-маршрутизатора
    
    allow-hotplug wlan0
    Руководство пользователя iface wlan0 inet
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    iface default inet dhcp
    
  3. Теперь измените настройки DHCP вашей сети таким образом, чтобы шлюз /маршрутизатор по умолчанию был вашим Pi. Вероятно, это означает изменение настроек в существующем поле маршрутизатора ADSL. В моем примере выше мой IP-адрес Pi - это 192.168.1.1.

Когда ваши устройства снова подключится к сети, им будет сообщено, что ваш Pi - их шлюз в Интернет, и все, что они тратят на интернет-трафик, будут отправлены на него. Ваш Pi, в свою очередь, передаст весь этот трафик на ваш обычный маршрутизатор. Возможно, вам придется отключить, а затем снова подключить устройства, чтобы эти изменения вступили в силу.

Теперь вы можете создать или установить инструмент для вашего мониторинга для вас, например vnstat .

Формирование трафика

Что касается формирования трафика, вот еще одно быстрое и грязное руководство, которое будет использовать мой собственный личный вариант wondershaper .

Чтобы это было полезно, вам нужно знать, насколько быстро ваше интернет-соединение. Обычно вы можете найти это на веб-интерфейсе вашего (оригинального) маршрутизатора, но в противном случае вы можете получить оценку, используя speedtest .

  1. sudo apt-get install iptables
  2. wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
  3. sudo ./wondershaper eth0 будет печатать текущее состояние формирования трафика. Очевидно, что ожидаемый статус - это отсутствие формирования, что означает, что существует одно правило, называемое pfifo_fast:

    • (eth0 - это имя проводного сетевого адаптера на модели B. См. ifconfig для имен интерфейсов в вашей системе).
    # pi @ flux: /home /pi /projects /adsl /wondershaper (master *)
    # sudo ./wondershaper eth0
    qdisc pfifo_fast 0: корень refcnt 2 полосы 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
     Отправлено 1908 байт 15 pkt (сброшено 0, превысило 0 запросов 0)
     backlog 0b 0p requeues 0
    
  4. sudo ./wondershaper eth0 3000 370, где:

    • 3000 - это скорость нисходящего канала моего интернет-соединения в kbit . Итак, 3Mbit == 3000kbit
    • 370 - скорость моего подключения к интернет-соединению, снова в кбит.
  5. sudo ./wondershaper eth0 теперь должен показывать гораздо больше результатов:

    # pi @ flux: /home /pi /projects /adsl /wondershaper (master *)
    # sudo ./wondershaper eth0
    qdisc htb 1: root refcnt 2 r2q 10 default 0 direct_packets_stat 0
     Отправлено 1858 байт 9 pkt (сброшено 0, превышено 0 запросов 0)
     backlog 0b 0p requeues 0
    qdisc sfq 40: родительский 1:40 предел 127p квант 1526b глубина 127 делитель 1024 perturb 10sec
     Отправлено 1858 байт 9 pkt (сброшено 0, превышено 0 запросов 0)
     backlog 0b 0p requeues 0
    qdisc sfq 10: родительский 1:10 предел 127p квант 1526b глубина 127 делитель 1024 perturb 10sec
     Отправлено 0 байт 0 pkt (сброшено 0, превышено 0 запросов 0)
     backlog 0b 0p requeues 0
    qdisc sfq 20: родительский 1:20 предел 127p квант 1526b глубина 127 делитель 1024 perturb 10sec
     Отправлено 0 байт 0 pkt (сброшено 0, превышено 0 запросов 0)
     backlog 0b 0p requeues 0
    qdisc sfq 30: родительский 1:30 ограничение 127p квант 1526b глубина 127 делитель 1024 perturb 10sec
     Отправлено 0 байт 0 pkt (сброшено 0, превышено 0 запросов 0)
     backlog 0b 0p requeues 0
    qdisc ingress ffff: parent ffff: fff1 ----------------
     Отправлено 768 байт 12 pkt (сброшено 0, превышено 0 запросов 0)
     backlog 0b 0p requeues 0
    класс htb 1: 1 корневая скорость 370000bit ceil 370000bit burst 10Kb cburst 1599b
     Отправлено 0 байт 0 pkt (сброшено 0, превышено 0 запросов 0)
     скорость 0bit 0pps backlog 0b 0p requeues 0
     заработано: 0 заимствовано: 0 гигантов: 0
     жетоны: 3459453 ctokens: 540531
    
    класс htb 1:10 parent 1: 1 leaf 10: prio 1 rate 370000bit ceil 370000bit burst 1599b cburst 1599b
     Отправлено 0 байт 0 pkt (сброшено 0, превышено0 запросов 0)
     скорость 0bit 0pps backlog 0b 0p requeues 0
     заработано: 0 заимствовано: 0 гигантов: 0
     жетоны: 540531 ctokens: 540531
    
    класс htb 1:20 родительский 1: 1 лист 20: prio 2 rate 246000bit ceil 246000bit burst 1599b cburst 1599b
     Отправлено 0 байт 0 pkt (сброшено 0, превышено 0 запросов 0)
     скорость 0bit 0pps backlog 0b 0p requeues 0
     заработано: 0 заимствовано: 0 гигантов: 0
     жетоны: 813000 ctokens: 813000
    
    класс htb 1:30 родительский 1: 1 лист 30: prio 3 rate 74000bit ceil 74000bit burst 1599b cburst 1599b
     Отправлено 0 байт 0 pkt (сброшено 0, превышено 0 запросов 0)
     скорость 0bit 0pps backlog 0b 0p requeues 0
     заработано: 0 заимствовано: 0 гигантов: 0
     жетоны: 2702687 ctokens: 2702687
    
    класс htb 1:40 корневой лист 40: prio 0 rate 100000Kbit ceil 100000Kbit всплеск 512Kb cburst 1600b
     Отправлено 3486 байт 15 pkt (сброшено 0, превысило 0 запросов 0)
     скорость 0bit 0pps backlog 0b 0p requeues 0
     заем: 15 заимствованных: 0 гигантов: 0
     жетоны: 654609 ctokens: 1250
    

Ваш исходящий сетевой трафик теперь формируется вашим Pi, и ваш входящий трафик слегка ослабляется, чтобы гарантировать, что Pi, а не исходная панель маршрутизации, контролирует трафик.

Чтобы отключить формирование, просто запустите sudo ./wondershaper eth0 clear. Вы можете изменить скорость восходящей и нисходящей линии связи, не очищая сначала, но это не повредит.

Обновление: Вам также необходимо отключить передачу перенаправления ICMP , так как нам нужен весь трафик, чтобы пройти через Pi для формирования. Оказывается, что ядро ​​Linux достаточно умен, чтобы понять, что клиенты в вашей домашней сети могут напрямую разговаривать с ADSL-полем, а не отказываться от трафика через Pi, и это говорит им об этом при каждой возможности. Затем клиенты отправляют свой трафик непосредственно в ваш ADSL-блок, а Pi не получает возможности его форматировать. Отключите его на лету, как это (потеряно при следующей перезагрузке):

echo 0 | sudo tee /proc /sys /net /ipv4 /conf /* /send_redirects

Обновите следующее, чтобы установить это во время загрузки: /etc/sysctl.conf

net /ipv4 /conf /eth0 /send_redirects = 0

(Спасибо https://unix.stackexchange.com/a/58081/22537 за этот отзыв )

Вы также можете быть заинтересованы в моих личных заметках о настройке шлюза Linux: http: //www.robmeerman.co.uk/unix/gateway

ответил EVictory 16 Jam1000000amMon, 16 Jan 2017 08:53:43 +030017 2017, 08:53:43
9

Имея небольшой сетевой фон, первое, что приходит на ум, это использовать его как фреймворк Snort, а затем вам не нужно беспокоиться о наличии только одного интерфейса. Вы должны настроить коммутатор /маршрутизатор для пересылки всего трафика на Pi, а также передать его на конечное устройство. Это называется монитором коммутатора, но ваше устройство может его не поддерживать. Вам может понадобиться http://www.snort.org/

Приятная вещь в такой настройке - ваш Pi сидит в стороне, наблюдая за тем, что проходит через коммутатор, вместо того, чтобы сидеть внутри с данными. Если у вас есть сбой программного обеспечения таким образом, трафик все равно может течь, просто не контролируется. С тем, что вы описываете с помощью двух интерфейсов, ваша программа вылетает из строя, ваша сеть выходит из строя.

Это не использует pi в качестве маршрутизатора, но позволяет вам отслеживать и сообщать о трафике, который перемещается по вашей сети.

ответил Butters 4 Mayam13 2013, 02:03:37
6

Я использовал Raspberry Pi для маршрутизации, и он работал хорошо. Как вы говорите, вам нужен хотя бы еще один сетевой интерфейс, так как у Raspberry Pi есть только один порт Ethernet. Вы можете добавить еще один интерфейс, подключенный к порту USB. Я использовал GSM-модем и Wi-Fi.

Примечания:

  • Используйте USB-концентратор с питанием. Wi-Fi и GSM-устройства требуют большей мощности, чем то, что могут поставлять USB-порты Raspberry Pi.
  • Если вы делаете покупки для устройств Wi-Fi, получите поддержку с поддержкой Linux. Вам нужен тот, который работает в режиме точки доступа, а не все палочки. Проверьте linuxwireless.org .

Вот моя запись в блоге о маршрутизации, а другая о настройке вверх точка доступа Wi-Fi , Это руководство помогло мне с настройкой маршрутизации. Материал маршрутизации не очень специфичен для малины Pi; все, что работает на Linux в целом, должно быть возможным. Детали зависят от того, какой дистрибутив вы используете.

ответил Frepa 4 Maypm13 2013, 14:38:40
3

Я использую Raspberry Pi в качестве маршрутизатора уже около месяца, без каких-либо проблем. У меня есть реальный коммерческий порт доступа Wi-Fi, а не домашний маршрутизатор Wi-Fi, поэтому я использовал это. У меня также есть конвертер USB-to-Ethernet, который был «заимствован» у Wii. Это относится к домашней локальной сети, а встроенный Ethernet-сервер Raspberry Pi переходит в WAN /Internet.

Пойдите, чтобы получить копию IPFire для малины Pi. Вам нужна версия ARM без последовательной консоли и последней стабильной версии. Перейдите на вкладку ARM. Загрузите «Изображение для архитектуры armv5tel».

Откажитесь от него. Подключите HDMI-телевизор и клавиатуру. Ответьте на первые несколько вопросов. Остальная конфигурация может быть выполнена из браузера в домашней сети, поэтому после этого вам не понадобится телевизор или клавиатура.

Это было не слишком сложно, и он работал как чемпион! Вот официальные инструкции: http://wiki.ipfire.org/en/hardware/arm /rpi

Последнее. Если вы собираетесь использовать USB-ключ Wi-Fi, проверьте питание вашего малинового питания Pi. Для питания малины Pi может быть достаточно питания USB 700 мА, но он не оставляет много возможностей для подключения Wi-Fi. Используйте либо USB-концентратор с питанием, либо включите питание малины Pi с питанием от 1 до 2Â USB.
Удачи!

ответил Bruce Kives 19 J0000006Europe/Moscow 2013, 02:27:21
1

(Это дополнение следует моему предыдущему ответу , в котором было руководство по настройке вашего Pi в качестве вашей локальной сети интернет-шлюз)

Неконтент с мониторингом моего использования в целом , я написал инструмент, который отслеживает использование Интернета в каждом устройстве в локальной сети. Это позволяет мне увидеть мгновенное использование в окне консоли и генерировать диаграммы исторического использования, чтобы я мог видеть, что произошло за одну ночь.


Rhodes , инструмент для мониторинга использования сетевых устройств в режиме реального времени и исторических сетей (на основе MAC-адреса): https://github.com/meermanr/adsl/tree/master/rhodes

Пример вывода консоли:

193 kiB /s TX 17 kiB /s RX 0004edbf98c0 home.gateway (Billion Electric Co.)
  0 kiB /s TX 0 kiB /s RX 2002af18dc15 Samsung Galaxy Tab 10.1, Вики
  0 kiB /s TX 0 kiB /s RX 34af2c01197b Nintendo 3DS: XL, Robert
  0 kiB /s TX 0 kiB /s RX 34af2c3af204 Nintendo 3DS: XL, Вики
  0 kiB /s TX 0 kiB /s RX 34af2c9cfffd Nintendo WiiU
  0 kiB /s TX 0 kiB /s RX 6045bd9c9dbc Xbox360 Slim
  0 kiB /s TX 0 kiB /s RX 745e1c56c297 Pioneer SX-LX57
 13 kiB /s TX 109 kiB /s RX 7831c1be0c34 Az Pro (Macbook Pro)
  0 kiB /s TX 0 kiB /s RX 80ea96e6214e Roberts-AirPort-Time-Capsule
  0 kiB /s TX 0 kiB /s RX 88308a770370 Samsung Galaxy S3, Vicky
189 kiB /s TX 211 kiB /s RX b827eb8fc0f3 Флюс (малина Pi)
  2 kiB /s TX 39 kiB /s RX b8e8563acb34 Macbook Pro, Вики
  0 kiB /s TX 0 kiB /s RX d022be2c26ef Samsung Galaxy Note 3, Rob
  0 kiB /s TX 0 kiB /s RX f82fa89368ea

В первом столбце показано, сколько устройств передается, что обычно означает загрузку в Интернет. Исключением для этого является сам ADSL-маршрутизатор (home.gateway в примере выше), который передает данные, полученные от ISP, запрашиваемым им устройством (т. Е. Загрузками). Конечно, он также передает закачки в Интернет, но он делает это с помощью своего ADSL-модема, который не находится в локальной сети и поэтому не отображается для этого инструмента.

Другим исключением может быть малиновый Pi («Flux» в приведенном выше), который, конечно, передает все данные, которыми он управляет, в обоих направлениях.

Но помимо этих исключений номера TX (передачи) относятся к загрузке и номерам RX (получать) для загрузки. Третий столбец - MAC-адрес устройства (без обычных разделителей «:» или «-»). Четвертый столбец показывает человекочитаемое имя устройства, если оно известно.

Диаграммы генерируются при запуске ./index.py, который предназначен для вызова с веб-сервера, такого как lighttpd (с помощью index.py code> добавлен в конфигурационный параметр index-file.names в /etc/lighttpd/lighttpd.conf). Вы можете просто запустить его вручную, и он будет генерировать некоторые изображения и печатать HTML в STDOUT. Поэтому вы хотите перенаправить это в файл, который вы можете открыть в браузере:

./index.py> index.html

Затем откройте index.html в предпочтительном браузере.

Требования к установке (все могут быть установлены с помощью apt-get install):

  • tcpdump - средства командной строки для захвата и описания сетевого трафика
  • rrdtool - Инструмент Round Round Robin Database, записи и диаграммы временных рядов.
  • rrdcached - Демона кэширования базы данных Round Robin, которая уменьшает накладные расходы при одновременной работе с несколькими RRD-файлами.
  • pypy-upstream (быстрая реализация языка программирования Python)

    • Вы можете использовать запас Python, который вам нравится: python rhodes.py (pypy) - это альтернативная реализация языка программирования Python, который делает Just-In-Time ( JIT), поэтому длительные сценарии будут использовать меньше циклов ЦП за счет увеличения объема памяти).

Замечание по использованию . Инструмент 'tcpdump', используемый этим скриптом, требует привилегий root для доступа к необработанному сетевому трафику. Это достигается запуском sudo tcpdump при запуске скрипта, поэтому вам может быть предложено ввести пароль. Лично я добавил правило NOPASSWD для /etc /sudoers, поэтому я никогда не запрашивал.

ответил RobM 1 J000000Tuesday14 2014, 20:12:12

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132