Маршрутизация трафика между интерфейсами на одном устройстве (с wlan0 на usb0)

Для этого вы должны запустить свой скрипт как systemd модуль (, предполагая, что у вас есть systemd ), где вы можете определить зависимость...

Если вы хотите придерживаться cron @reboot(то, что кажется простым выбором )вы должны сделать свой скрипт немного умнее (или запускать cron после монтирования fs... что изменить? не предложил бы ). Вместо простой задержки можно проверить, смонтирована ли нужная файловая система (в bash):

while ! mount | awk '{print $3}' | grep -qx /the/mountpoint; do
    sleep 1
done

Или вы можете проверить, есть ли там файл, который вам нужен:

while ! [ -f /that/file ] ; do
    sleep 1
done
1
10.08.2020, 14:47
1 ответ

yes I want to NAT the traffic from my wifi adapter on wlan0 to my machine which has another network on usb0.

Обычно вы формулируете это наоборот :вы хотите транслировать через NAT трафик сusb0("внутреннего интерфейса" ), когда он выходит на wlan0в направлении остального мира.

Таким образом, только маскарад на внешнем интерфейсеwlan0:

EXTIF=wlan0
INTIF=usb0
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE

Последняя строка важна и выполняет фактический NAT. Остальные только фильтруют и следят за тем, чтобы во внутреннюю сеть не попадало ничего забавного(usb0).

(Прежде чем делать вышеописанное, обязательно удалите все правила, если они все еще активны ).

1
18.03.2021, 23:14

Теги

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