Вам понадобятся оба набора правил в iptables
. Два набора правил гарантируют, что трафик, уходящий указанными интерфейсами, соответствующим образом замаскирован. Вот мое предложение, которое немного проще вашего:
# Masquerade outgoing traffic
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
# Allow return traffic
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Forward everything
iptables -A FORWARD -j ACCEPT
Часть головоломки, которой не хватает, - это маршрутизация. Если туннель активен, вы хотите, чтобы его использовал "весь" исходящий трафик. В противном случае используйте обычный маршрут.
Это обрабатывается в OpenVPN с помощью параметра redirect-gateway def1
в конфигурации вашего клиента.
Я также пытался найти «минимальную беспроводную связь» для RPi Zero W с помощью buildroot, поэтому этот вопрос и ответ занял довольно высокое место в результатах поиска. Несмотря на то, что первоначальный ответ был несколько полезным, он определенно не самый лучший, поэтому я подумал, что стоит поделиться своими собственными выводами:
Использование buildroot 2018.02.2
make raspberrypi0_defconfig
для очистки вашей конфигурации. Затем(make menuconfig и )выберите следующие из Целевые пакеты:
Hardware Handling -> Firmware -> rpi-wifi-firmware
Networking applications -> wpa_supplicant
Networking applications -> wpa_supplicant - Enable 80211 support
Все остальное, что необходимо, должно быть предварительно -выбрано.
Затем в /etc/network/interfaces
auto wlan0
iface wlan0 inet dhcp
pre-up wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B
post-down killall -q wpa_supplicant
и в /etc/wpa _supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ap_scan=1
network={
ssid="My WLAN"
psk="my_wlan_password"
}
и теперь нам все еще не хватает секретного ингредиента :драйвер Wi-Fi должен быть загружен до запуска сценариев инициализации сети -. Вы можетевключить поддержку WCHAR(в Toolchain -меню ), чтобы иметь eudev как /dev management(в конфигурации системы -меню ), которое будет автоматически обрабатывать загрузку драйвера. На самом деле я рекомендую это, если вы собираетесь подключать устройства UBS к вашему RPi....
...но если нет, отредактируйте /etc/inittab и modprobe brcmfmac непосредственно перед запуском rc-скриптов:
...
# Load Wifi driver
::sysinit:/sbin/modprobe brcmfmac
# now run any rc scripts
::sysinit:/etc/init.d/rcS
...
Вот именно.