Как настроить dnsmasq, чтобы устройство, подключенное к маршрутизатору, могло подключаться по SSH к устройству, подключенному через рабочий стол?

Это потому, что имя пакета apparmor, а не apparmor-utils. Это «utils» в конце имени пакета специфично для Ubuntu, а в Alpine apparmor-utilsявляется подпакетом.

Попробуйте установить весь apparmor с помощью apk update && apk add apparmor.

1
09.02.2021, 04:17
1 ответ

Вы говорите о превращении машины А в маршрутизатор. DNSMasq — один из полезных компонентов, позволяющий маршрутизатору раздавать IP-адреса клиентам DHCP и предлагающий сервер имен. Однако самого по себе этого недостаточно.

  1. Вам необходимо включить пересылку пакетов в ядре. Запустите sysctl net.ipv4.ip_forward=1с привилегиями root, например, sudo. Сделайте его постоянным, поместив net.ipv4.ip_forward=1где-нибудь под /etc/sysctl.d/, например, поместив его в файл с именем «routing.conf». Вы можете проверить текущее значение, запустив sysctl net.ipv4.ip_forward.

  2. Вам нужна трансляция сетевых адресов (NAT ), она же маскарад. Если вы используете iptables, вам понадобится раздел вверху, который выглядит примерно так (для интерфейса, обращенного наружу -enps1s8):

    *nat
    :PREROUTING     ACCEPT  [0:0]
    :INPUT          ACCEPT  [0:0]
    :OUTPUT         ACCEPT  [0:0]
    :POSTROUTING    ACCEPT  [0:0]
    
    -A POSTROUTING  -o enp1s8 -j MASQUERADE
    
    COMMIT
    
  3. Помимо включения переадресации в ядре и настройки NAT, вам также необходимо указать брандмауэру принимать запросы на пересылку пакетов,так что для iptables пара правил вроде так:

    # Forward between client LAN and external WAN
    -A FORWARD                                            -i enp1s5 -o enp1s8 -j ACCEPT
    -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -i enp1s8 -o enp1s5 -j ACCEPT
    
  4. Наконец, должны быть правила маршрутизации пакетов. Это не брандмауэр, вместо этого я бы использовал iproute2. Это удобно поместить в скрипт:

    $ cat /usr/local/sbin/add-lan-route
    #! /usr/bin/ip -b
    
    addr add 192.168.2.1 dev enp1s5
    route add 192.168.2.1/24 via 192.168.2.1 dev enp1s5
    
  5. Машина B (ноутбук )также хочет поговорить с dnsmasq на машине A (рабочий стол ). Таким образом, для открытия нужных портов необходимы дополнительные правила iptables. Чтобы все было организовано, было бы неплохо создать для этого «цепочку», но если вы не чувствуете себя уверенно с iptables, самый прямой способ получить то, что вы хотите, выглядит примерно так:

    -A INPUT -p udp -s 192.168.2.0/24 -m multiport --dports 67,68 -m comment --comment "dhcp"    -j ACCEPT
    -A INPUT -p tcp -s 192.168.2.0/24              --dport  53    -m comment --comment "dns-tcp" -j ACCEPT
    -A INPUT -p udp -s 192.168.2.0/24              --dport  53    -m comment --comment "dns-udp" -j ACCEPT
    
  6. Наконец, вы хотите, чтобы клиент dhcp машины B получил правильный IP-адрес, который может быть выдан dnsmasq на машине A. Базовая конфигурация dnsmasq может выглядеть следующим образом:

    interface=enp1s5
    dhcp-range=192.168.2.2,192.168.2.254,255.255.255.0,1h
    dhcp-host=20:cf:30:71:b2:7e,192.168.2.193,1h
    cache-size=2048
    

Размер кеша на самом деле не важен, это всего лишь предложение, которое вы можете изменить или отбросить. Остальное позволяет всему, что подключено к enp1s5, запрашивать IP-адрес, и если это MAC-адрес машины B, он получит ваш предпочтительный IP-адрес. Вам также следует просмотреть конфигурацию dnsmasq по умолчанию, так как в ней есть много комментариев для размышлений.

Выполнив все эти действия, мы надеемся, что машина A будет функционировать как маршрутизатор, который может предоставлять службу имен и IP-адрес машине B, а также использовать NAT для подключения к Интернету через enp1s8.

0
18.03.2021, 22:32

Теги

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