The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Домашний рутер на Raspberry Pi"
Отправлено auto_tips, 09-Ноя-16 11:24 
Нам понадобится: Raspberry Pi (у меня Raspberry Pi 1 модель B), вторая сетевая карта с интерфейсом USB (например, DLink DUB-E100) и
SD карта с записанным образом Raspbian.

Сразу скажу, что в Raspbian Wheezy ядро собрано без опций

   CONFIG_NETFILTER_XT_TARGET_TCPMSS=y
   CONFIG_NETFILTER_XT_MATCH_TCPMSS=y

и будут проблемы с некоторыми сайтами. Придется позже пересобрать ядро с этими опциями.


Итак, установим пакеты:

   sudo apt-get install ntp # Нам нужно точное время
   sudo update-rc.d ntp enable
   sudo service ntp start
   sudo apt-get install dnsmasq # Рутер будет резолвером DNS для локальной сети
   sudo update-rc.d dnsmasq enable
   sudo apt-get dnsmasq start

Настроим локальную сеть, для этого отредактируем файл /etc/network/interfaces:

   auto lo
   iface lo inet loopback
   auto eth0
   iface eth0 inet  static
    address 192.168.4.1
    netmask 255.255.255.0

У нас eth0 - локальная сеть, eth1 (DLink) будет для Internet.

Теперь установим пакеты для pppoe:

   sudo apt-get install pppoe pppoeconf

Настроим интернет соединение pppoe с помощью мастера pppoeconf:

   sudo pppoeconf

Теперь осталось настроить firewall. Во-первых включим маршрутизацию: отредактируем файл /etc/sysctl.conf и установим в нем

   net.ipv4.ip_forward=1

и выполним

   sudo sysctl net.ipv4.ip_forward=1

Возьмем за основу firewall файл /etc/firewall:

   # Generated by iptables-save v1.4.14 on Thu Sep 15 16:51:15 2016
   *nat
   :PREROUTING ACCEPT [1:32]
   :INPUT ACCEPT [0:0]
   :OUTPUT ACCEPT [2:307]
   :POSTROUTING ACCEPT [1:240]
   -A POSTROUTING -o ppp0 -j MASQUERADE
   COMMIT
   # Completed on Thu Sep 15 16:51:15 2016
   # Generated by iptables-save v1.4.14 on Thu Sep 15 16:51:15 2016
   *filter
   :INPUT ACCEPT [0:0]
   :FORWARD ACCEPT [0:0]
   :OUTPUT ACCEPT [0:0]
   :TINYWALL-FORWARD - [0:0]
   :TINYWALL-INPUT - [0:0]
   :TINYWALL-OUTPUT - [0:0]
   -A INPUT -m state --state INVALID -j LOG --log-prefix    "CHAIN=TINYWALL-INVALID-INPUT
   -A INPUT -m state --state INVALID -j DROP
   -A INPUT -m state --state NEW -j LOG --log-prefix "CHAIN=TINYWALL-NEW-INPUT " #Это необязательная строка
   -A INPUT -p icmp -j ACCEPT
   -A INPUT -s 192.168.4.0/24 -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT
   -A INPUT -s 127.0.0.1/32 -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT
   -A INPUT -s 192.168.4.0/24 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT
   -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
   -A INPUT -j TINYWALL-INPUT
   -A INPUT -j LOG --log-prefix "CHAIN=TINYWALL-INPUT-REJECT "
   -A INPUT -j REJECT --reject-with icmp-admin-prohibited
   -A FORWARD -m state --state INVALID -j LOG --log-prefix "CHAIN=TINYWALL-INVALID-FORW "
   -A FORWARD -m state --state INVALID -j DROP
   -A FORWARD -m state --state NEW -j LOG --log-prefix "CHAIN=TINYWALL-NEW-FORW "
   -A FORWARD -p icmp -j ACCEPT
   -A FORWARD -m state --state NEW -j LOG --log-prefix "CHAIN=TINYWALL-NEW-FORW " #Это необязательная строка
   -A FORWARD -s 192.168.4.0/24 -p udp -m udp --dport 53 -m state  --state NEW -j ACCEPT
   -A FORWARD -s 192.168.4.0/24 -m state --state NEW -j ACCEPT
   -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
   -A FORWARD -j TINYWALL-FORWARD
   -A FORWARD -j LOG --log-prefix "CHAIN=TINYWALL-FORW-REJECT "
   -A FORWARD -j REJECT --reject-with icmp-admin-prohibited
   -A OUTPUT -m state --state INVALID -j DROP
   -A OUTPUT -m state --state NEW -j LOG --log-prefix "CHAIN=TINYWALL-NEW-OUTPUT "
   -A OUTPUT -p icmp -j ACCEPT
   -A OUTPUT -m state --state NEW -j LOG --log-prefix "CHAIN=TINYWALL-NEW-OUTPUT " #Это необязательная строка
   -A OUTPUT -p udp -m udp --dport 53 -m state --state NEW -j ACCEPT
   -A OUTPUT -p udp -m udp --sport 53 -m state --state NEW -j ACCEPT
   -A OUTPUT -p udp -m udp --dport 123 -m state --state NEW -j ACCEPT
   -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
   -A OUTPUT -j TINYWALL-OUTPUT
   -A OUTPUT -j LOG --log-prefix "CHAIN=TINYWALL-OUTPUT-REJECT "
   -A OUTPUT -j REJECT --reject-with icmp-admin-prohibited
   -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1492
   COMMIT
   # Completed on Thu Sep 15 16:51:15 2016
   # Generated by iptables-save v1.4.14 on Thu Sep 15 16:51:15 2016
   *mangle
   :PREROUTING ACCEPT [2857:1106716]
   :INPUT ACCEPT [2787:1101011]
   :FORWARD ACCEPT [70:5705]
   :OUTPUT ACCEPT [2005:212971]
   :POSTROUTING ACCEPT [2163:232874]
   COMMIT
   # Completed on Thu Sep 15 16:51:15 2016

Запишем в /etc/rc.local строчку

   iptables-restore < /etc/firewall

Рутер готов, можно использовать 192.168.4.1 как шлюз и DNS сервер.

Напоследок текст скрипта log-analyzer:

   #!/bin/bash
   while read string
   do
       echo ""
       export $string 2>/dev/null
       HSRC=`host $SRC 2>/dev/null | grep "domain name pointer" | awk '{ print $5 }'`
       HDST=`host $DST 2>/dev/null | grep "domain name pointer" | awk '{ print $5 }'`
       echo $PROTO | grep "^[[:digit:]]*$" > /dev/null && unset DPT
       PROTO=`grep "[[:space:]]$PROTO[[:space:]]" /etc/protocols | awk '{ print $1 }'`
       HPROTO=`grep -i "[[:space:]]$DPT/$PROTO" /etc/services | sed 's/\\t/\\ /g' | sed 's/\\ \\ /\\ /g'`
       HSPROTO=`grep -i "[[:space:]]$SPT/$PROTO" /etc/services | sed 's/\\t/\\ /g'| sed 's/\\ \\ /\\ /g'`
       HSRC=${HSRC:-$SRC}
       HDST=${HDST:-$DST}
       HPROTO=${HPROTO:-"$DPT/$PROTO"}
       HSPROTO=${HSPROTO:-"$SPT/$PROTO"}
       set $string
       echo "$CHAIN $HDST ($HPROTO) <=== $HSRC ($HSPROTO) /$1 $2 $3/"
   done

Его можно запустить командой:

   sudo tail -n 50 -f /var/log/syslog | grep "TINYWALL" | /<path>/log-analyzer

URL:
Обсуждается: http://www.opennet.ru/tips/info/2995.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру