Главная
Главная Руководства Raspberry Pi › Ростелеком. Raspbian Jessie в качестве роутера.



Автор:

Статья опубликована: 2016-11-25 13:21:56
Последние правки: 2018-03-11 20:27:41

Делаем из Raspbian Jessie роутер для доступа в интернет.
Подключаемся к Ростелеком.


  • Софт
    Вначале необходимо любым доступным образом установить пакеты dnsutils, dnsmasq и pppoe.
    # apt-get install dnsutils
    # apt-get install dnsmasq
    # apt-get install pppoe
    

  • ip-адреса
    eth0 - сетевой интерфейс на плате, статический ip, смотрит в локальную сеть
    eth1 - D-Link DUB-E100, usb, динамический ip, смотрит в сеть провайдера

    /etc/network/interfaces
    auto eth0
    allow-hotplug eth0
    iface eth0 inet manual
    
    auto dsl-provider
    iface dsl-provider inet ppp
    provider dsl-provider
    
    auto eth1
    iface eth1 inet manual
    
    /etc/dhcpcd.conf - файлик в системе есть, пишем в начало
    interface eth0
    static ip_address=192.168.1.6/24
    nogateway # не дает записать default route интерфейса в таблицу маршрутизации
    nohook resolv.conf # не дает записать dns интерфейса в /etc/resolv.conf
    
    interface eth1
    

  • Настраиваем маршрутизацию
    /etc/sysctl.conf, разрешаем маршрутизацию пакетов:
    net.ipv4.ip_forward=1
    net.ipv6.conf.all.forwarding=1
    

  • iptables + nat
    Файл /etc/ppp/ip-up.d/0020iptables (сделать его исполняемым):
    #!/bin/sh
    
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    
    #
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT
    # lan
    iptables -A INPUT -i eth0 -j ACCEPT
    iptables -A OUTPUT -o eth0 -j ACCEPT
    # provider interface
    iptables -A OUTPUT -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    
    # vpn interface
    iptables -A OUTPUT -o ppp0 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
    
    # established
    iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    
    # nat
    iptables -A POSTROUTING -t nat -o ppp0 -j MASQUERADE
    iptables -A FORWARD -i eth0 -o ppp0 -s 192.168.1.0/24 -j ACCEPT
    iptables -A FORWARD -i ppp0 -o eth0 -d 192.168.1.0/24 -j ACCEPT
    

  • Настраиваем PPPoE
    /etc/ppp/options, добавляем
    lcp-echo-adaptive
    
    /etc/ppp/chap-secrets, добавляем логин-пароль
    "LOGIN@realm" * "PASSWORD"
    
    /etc/ppp/peers/dsl-provider, проверяем наличие строчек
    # eth1 - ЭТО НАШ ИНТЕРФЕЙС, В КОТОРЫЙ ВОТКНУТ ПРОВАЙДЕР
    pty "/usr/sbin/pppoe -I eth1 -T 80 -m 1452"
    noipdefault
    usepeerdns
    defaultroute
    hide-password
    lcp-echo-interval 20
    lcp-echo-failure 3
    connect /bin/true
    noauth
    persist
    mtu 1492
    noaccomp
    default-asyncmap 
    
    # добавляем в конце файла логин
    user "LOGIN@realm"
    

  • Настройка dnsmasq
    /etc/dnsmasq.conf
    # раскомментировать
    filterwin2k
    # здесь задать домен домашней сети, если есть
    local=/LOCALDOMAIN/
    
    Добавляем в автозагрузку и запускаем
    # systemctl enable dnsmasq
    # service dnsmasq restart
    # systemctl status dnsmasq.service
    
    Важно! Dnsmasq запускается гораздо раньше, чем поднимается PPPoE, из-за чего у dnsmasq отсутствует информация о dns-серверах провайдера. Поэтому, нужно сделать так, чтобы dnsmasq перезапускался после того, как поднимется PPPoE. Самое простое - это создать файл /etc/ppp/ip-up.d/0010dnsmasq (не забыть сделать его исполняемым), куда записать следующее:
    #!/bin/sh
    /bin/systemctl restart dnsmasq
    

  • Перезагружаемся, проверяем:
    # ifconfig
    eth0      Link encap:Ethernet  HWaddr b8:27:eb:80:ab:fc  
              inet addr:192.168.1.6  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: fe80::ba27:ebff:fe80:abfc/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:88 errors:0 dropped:0 overruns:0 frame:0
              TX packets:96 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:9845 (9.6 KiB)  TX bytes:14878 (14.5 KiB)
    
    eth1      Link encap:Ethernet  HWaddr 90:8d:78:04:36:e6  
              inet addr:169.254.189.206  Bcast:169.254.255.255  Mask:255.255.0.0
              inet6 addr: fe80::3f17:ad6e:828e:72c9/64 Scope:Link
              UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
              RX packets:45 errors:0 dropped:0 overruns:0 frame:0
              TX packets:101 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:3869 (3.7 KiB)  TX bytes:11909 (11.6 KiB)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:156 errors:0 dropped:0 overruns:0 frame:0
              TX packets:156 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1 
              RX bytes:11615 (11.3 KiB)  TX bytes:11615 (11.3 KiB)
    
    ppp0      Link encap:Point-to-Point Protocol  
              inet addr:109.198.202.24  P-t-P:109.198.200.1  Mask:255.255.255.255
              UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
              RX packets:35 errors:0 dropped:0 overruns:0 frame:0
              TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:3 
              RX bytes:3041 (2.9 KiB)  TX bytes:3995 (3.9 KiB)