Решение немного длинное.
Используйте hostapd, чтобы создать точку доступа на wlan1. Есть инструкции о том, как сделать это по всему Интернету, вы можете найти любой, который вам нравится. Вы можете опустить утверждение bridge = br0 согласно предложению Даниэля Б.
Теперь вы можете дать вашему интерфейсу IP-адрес и вызвать его:
ip addr add 192.168.1.111/24 dev wlan1
ip link set dev wlan1 up
где 192.168.1.111 - адрес вне пула DHCP вашего маршрутизатора, но в той же подсети.
Теперь нам нужно определиться с диапазоном IP-адресов для клиентов вашей точки доступа. Это необходимо не из-за причин DHCP, а из-за маршрутизации (см. Следующий пункт). Выберите небольшую подсеть вашей основной локальной сети, которая не используется вашим основным маршрутизатором. Например, если маршрутизатор распределяет IP-адреса в диапазоне 192.168.1.2-192.168.1.100, вы можете использовать что-то вроде 192.168.1.112/28, которое включает в себя все адреса в диапазоне 192.168.1.112-192.168.127.
Теперь добавьте все важные маршруты:
ip route add 192.168.1.112/28 dev wlan1
Это заставляет ваше ядро отправлять пакеты для ваших клиентов Wi-Fi через правильный интерфейс, а не через ваш стандартный интерфейс wlan0, где у вас уже есть правило
ip route add 192.168.1.0/24 dev wlan0
который приходит с вашего DHCP. Позвольте мне повторить это, потому что это важно: первый маршрут имеет приоритет над вторым, потому что он более конкретен, так что ваше ядро будет знать, как связаться с вашими Wi-Fi-клиентами с помощью интерфейса wlan1.
Теперь вам нужно настроить dnsmasq для работы на интерфейсе wlan1, чтобы распределять адреса в диапазоне 192.168.1.112/28 ; используйте следующий файл /etc/dnsmasq.conf:
domain-needed
bogus-priv
dhcp-authoritative
interface=wlan1
server=8.8.8.8
server=8.8.4.4
expand-hosts
domain=YourLanName.lan
dhcp-range=192.168.1.112,192.168.1.127,12h
dhcp-option=3,192.168.1.1
dhcp-host=4C:E6:76:00:11:22,PC_NAME,192.168.1.119,12h
что должно быть само за себя. В следующей за последней строкой dnsmasq передает в качестве шлюза не IP-адрес компьютера, на котором работает dnsmasq, а IP-адрес истинного маршрутизатора / шлюза вашей локальной сети. Если вы не хотите, чтобы клиенты Wi-Fi могли подключаться к Интернету, вы можете пропустить последнюю строку. Запустите dnsmasq,
systemctl start dnsmasq
Я предполагаю, что вы находитесь на systemd, в противном случае вышеперечисленное должно быть заменено
service dnsmasq start
Последняя строка показывает, как вывести зарезервированные (= статические) адреса. Если вы хотите назначить одному из ваших клиентов Wi-Fi и IP-адрес вне диапазона 192.168.1.112/28, вы можете сделать это, просто не забудьте указать ядру, где этот адрес может быть найден: например,
ip route add 192.168.1.200/32 dev wlan1
Не забудьте разрешить трафик IPv4 через ваши интерфейсы,
echo 1 > /proc/sys/net/ipv4/ip_forward
и ЗАПРОСИТЬ ваш трафик,
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Эта последняя команда гарантирует, что весь трафик, покидающий интерфейс wlan0, по- видимому, исходит от вашего RPI, что, в свою очередь, означает, что ваши клиенты будут получать ответы на свои запросы; не беспокойтесь о том, чтобы отслеживать, какие возвращаемые пакеты принадлежат RPI, а какие - одному из клиентов, ядро делает это автоматически.
Наконец, мы разрешили только IP-трафик между wlan0 и wlan1 (в этом смысл IPv4-пересылки), что исключает протоколы уровня 2, такие как ARP. Если вы хотите восполнить этот недостаток, вы можете использовать proxy-arp:
echo 1 > /proc/sys/net/ipv4/conf/wlan0/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/wlan1/proxy_arp