Навеяно темой.

Помню в конце благославенных 90-х настроить локалку на основе сервера на каком-нибудь первопне с линухом на борту было веселым и беззаботным развлечением. Слава зефирному человеку я не связал жизнь с IT, сетями и…короче линь остался для меня скорее гиковским увлечением, чем работой. Хотя в общем-то и в работе линь плотно идет вместе со всем остальным стеком технологий. И всегда линь ассоциировался с чем-то максимально понятным, документированным, комфортным, надежным.

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

Последние лет 15 отдельные эпизоды из линукс жизни скорее навевали печаль, чем гордость от принадлежности к гикам. Но конкретно вчера я ваще сгорел от того, что не осилил примитивную вещь.

<<<

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

Схема сети такая: от провайдера приходит кабель, воткнут в старенький комп, ip-шник раздает dhcp прова. Интерфейс встроенной гигабитной карточки eno1. Также в компе вставлена WiFi карточка(wlp7s0) и сетевуха на 4 порта (enp3s0, enp4s0, enp5s0, enp6s0). От каждого порта идет кабель, на конце которых 5-портовые свичи, к которым в свою очередь подключены тв-приставки и всякое малозначительное барахло(собственно поэтому там и свичи).

Задача: настроить комп как маршрутизатор, WiFi карту заставить раздать собственно WiFI, на компе поднять vpn, который раздавать по кабелям на свичи с приставками. Разумеется настроить бридж, чтобы компы и принтеры на разных свичах могли друг до друга достучаться.

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

Итак, что было сделано. На комп накатил Void Linux(извините, привык к нему просто). Установлены iptables, dnsmasq, hostapd.

Для начала проводная часть:

Вписал в /etc/sysctl.conf

net.ipv4.ip_forward=1

И принял изменения:

sudo sysctl -p /etc/sysctl.conf

Присвоил интерфейсам айпишники:

sudo ip addr add 192.168.3.1/24 dev enp3s0
sudo ip addr add 192.168.4.1/24 dev enp4s0
sudo ip addr add 192.168.5.1/24 dev enp5s0
sudo ip addr add 192.168.6.1/24 dev enp6s0

Затем пишу правила для iptables:

Очищаю правила:

sudo iptables -t nat -F
sudo iptables -t nat -X

Настраиваю дроп по умолчанию:

sudo iptables -P FORWARD DROP

Устраиваю маскарад и указываю от каких интерфейсов слушать пакеты:

sudo iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
sudo iptables -A FORWARD -i eno1 -o enp3s0 -j ACCEPT
sudo iptables -A FORWARD -i eno1 -o enp4s0 -j ACCEPT
sudo iptables -A FORWARD -i eno1 -o enp5s0 -j ACCEPT
sudo iptables -A FORWARD -i eno1 -o enp6s0 -j ACCEPT

ИИИИИИиии вот тут первый тупняк. Вбиваю проверку таблицы…

sudo iptables -n -L -t nat

…но в ответ получаю пустую таблицу правил. Не понял. Разве я не должен был тут увидеть установленные правила?

Ладно, едем пока дальше, настраивает dhcp раздачу айпишников:

Редактирую /etc/dnsmasq.conf

interface=enp3s0
dhcp-range=192.168.3.100,192.168.3.200,255.255.255.0,12h

interface=enp4s0
dhcp-range=192.168.4.100,192.168.4.200,255.255.255.0,12h

interface=enp5s0
dhcp-range=192.168.5.100,192.168.5.200,255.255.255.0,12h

interface=enp6s0
dhcp-range=192.168.6.100,192.168.6.200,255.255.255.0,12h

Перезапускаю службу, успешно:

sudo sv restart dnsmasq

Проверяю что айпишники присвоились…

ip link show

…айпишники всем портам присвоились, state UP.

Разумеется уже на стадии пустой таблицы правил iptables стало понятно, что работать не будет. Ну собственно и не работает. Приставки айпишники не получают, хотя и показывают статус подключено.

Лллладно. Пока туплю, думаю, подниму раздачу вафли.

Конфигурирую файл /etc/hostapd/hostapd.conf

interface=wlp7s0
ssid=MyBestWiFi
channel=1
hw_mode=g
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=my_best_password
wpa_key_mgmt=WPA-PSK

Принимаю изменения:

sudo hostapd -B /etc/hostapd/hostapd.conf

Дописываю правила в таблицу правил, которые в нее не вписываются:

sudo iptables -A FORWARD -i wlp7s0 -o eno1 -j ACCEPT

Дописываю в /etc/dnsmasq.conf

interface=wlp7s0
dhcp-range=192.168.7.100,192.168.7.200,255.255.255.0,12h

Ну и стартую сервис:

sudo sv start hostapd

Сеть появляется, но при подключении смартфон вылетает по тайм ауту.

С чего конкретно я угорел.

  1. Нахера надо было закапывать ifconfig и изобретать велосипед с ip?

  2. Нахера в системах по умолчанию отдают управление сраному NetworkManager? Я наверное полчаса не мог понять почему через ip у меня не присваиваются айпишники, пока не понял, что процесс занят утилитой nmcli. Разумеется было снесено к херам за ненабностью.

  3. Чо за херня с таблицей iptables? Почему она пустая?

В общем, объясните где я дебил и как мне это осилить?

@Anoxemian, @cocucka

  • OberstserjOP
    link
    fedilink
    arrow-up
    0
    ·
    10 months ago

    ip a:

    : lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UP group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host proto kernel_lo 
           valid_lft forever preferred_lft forever
    2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 2c:44:fd:27:84:7f brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.241/24 brd 192.168.1.255 scope global dynamic noprefixroute eno1
           valid_lft 86327sec preferred_lft 75527sec
        inet6 fe80::fad3:6505:2262:746/64 scope link 
           valid_lft forever preferred_lft forever
    3: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
        link/ether 98:b7:85:21:c3:a7 brd ff:ff:ff:ff:ff:ff
    4: enp4s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
        link/ether 98:b7:85:21:c3:a8 brd ff:ff:ff:ff:ff:ff
    5: enp5s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
        link/ether 98:b7:85:21:c3:a9 brd ff:ff:ff:ff:ff:ff
    6: enp6s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
        link/ether 98:b7:85:21:c3:aa brd ff:ff:ff:ff:ff:ff
    7: wlp7s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
        link/ether 18:56:80:4a:91:7e brd ff:ff:ff:ff:ff:ff
    

    ip r l:

    default via 192.168.1.1 dev eno1 proto dhcp src 192.168.1.241 metric 1002 
    192.168.1.0/24 dev eno1 proto dhcp scope link src 192.168.1.241 metric 1002 
    

    ip ru l:

    0:	from all lookup local
    32766:	from all lookup main
    32767:	from all lookup default
    

    Блин, тут чувак свет вырубил, ключи от щитка у него, свичи обесточены. Сцукко…)))

    • Anoxemian
      link
      fedilink
      arrow-up
      0
      ·
      10 months ago

      Бро, все плохо. Все пропало))))

      ip link set enp3s0 up
      ip link set enp4s0 up
      ip link set enp5s0 up
      ip link set enp6s0 up
      ip link set wlp7s0 up
      

      Они у тебя погашены тупо. Ну и таки

      iptables -P FORWARD ACCEPT
      
      • OberstserjOP
        link
        fedilink
        arrow-up
        0
        ·
        10 months ago

        Они у тебя погашены тупо. Ну и таки

        Я ж пишу выше, они тупо не включены сейчас, чувак вырубил щиток и свалил с ключами, лол.

        С этим не было проблем, они получают state UP, получают айпишники.

        iptables -P FORWARD ACCEPT

        Попробую. Вот сейчас смотри, вбиваю вот это, а потом пишу

        sudo iptables -n -L -t nat
        

        И получаю хйу:

        Chain PREROUTING (policy ACCEPT)
        target     prot opt source               destination         
        
        Chain INPUT (policy ACCEPT)
        target     prot opt source               destination         
        
        Chain OUTPUT (policy ACCEPT)
        target     prot opt source               destination         
        
        Chain POSTROUTING (policy ACCEPT)
        target     prot opt source               destination   
        

        А, ну и да, iptables с репозитория установлен. Вроде как полноценный.

        • Anoxemian
          link
          fedilink
          arrow-up
          0
          ·
          10 months ago

          iptables -P FORWARD ACCEPT

          это таблица filter а ты смотришь nat

          iptables -t filter -L -nxv и iptabpes -t nat -L -nxv

            • Anoxemian
              link
              fedilink
              arrow-up
              0
              ·
              10 months ago

              Ну ты ж понимаешь, что нездоровая хуйня)

            • Anoxemian
              link
              fedilink
              arrow-up
              0
              ·
              10 months ago

              sudo -i есть шанс, что поломаный?

              • OberstserjOP
                link
                fedilink
                arrow-up
                0
                ·
                10 months ago

                есть шанс, что поломаный?

                Все остальное-то робiт)

                Короче, допустим момент, что iptables реально инвалидный. Как бы ты попробовал обойтись без него? ufw?

                • Anoxemian
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  10 months ago

                  никак, других не завезли, подсистема netfilter одна. я думаю у тебя nftables не установлен, а башлапша iptables просто глючит. установи nft кароч и пробуй

      • OberstserjOP
        link
        fedilink
        arrow-up
        0
        ·
        10 months ago

        Блин, сорян, чел укатил в Брабант, сегодня кина не будет. Могу только с вавайем поиграться.

        Я, вчера чет психанул и снес конфиг. Щас восстановлю, попробую хотя б wifi раздать