Это потому, что имя пакета apparmor
, а не apparmor-utils
. Это «utils» в конце имени пакета специфично для Ubuntu, а в Alpine apparmor-utils
является подпакетом.
Попробуйте установить весь apparmor с помощью apk update && apk add apparmor
.
Вы говорите о превращении машины А в маршрутизатор. DNSMasq — один из полезных компонентов, позволяющий маршрутизатору раздавать IP-адреса клиентам DHCP и предлагающий сервер имен. Однако самого по себе этого недостаточно.
Вам необходимо включить пересылку пакетов в ядре. Запустите sysctl net.ipv4.ip_forward=1
с привилегиями root, например, sudo. Сделайте его постоянным, поместив net.ipv4.ip_forward=1
где-нибудь под /etc/sysctl.d/
, например, поместив его в файл с именем «routing.conf». Вы можете проверить текущее значение, запустив sysctl net.ipv4.ip_forward
.
Вам нужна трансляция сетевых адресов (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
Помимо включения переадресации в ядре и настройки 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
Наконец, должны быть правила маршрутизации пакетов. Это не брандмауэр, вместо этого я бы использовал 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
Машина 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
Наконец, вы хотите, чтобы клиент 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.