В принципе, моя сеть выглядит так
+------+
10.0.0.10 ------ 10.0.0.1=|Laptop|=11.0.0.11 ------ 11.0.0.1
(wlan0,client) (AP,wlan0)+------+(wlan1,client) (AP)
wlan0 и wlan1 — это USB-адаптеры Wi-Fi, подключенные к ноутбуку.
Я хочу подключить эти сети через свой ноутбук. Сначала я пробовал использовать мост, но оказалось, что мост не поддерживается.
Я пробовал это, но это не сработало.
iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
Буду признателен за любую помощь.
решение1
Вам не нужны два правила маскировки. Вам нужно только маскировать клиента, у которого ваш компьютер является маршрутом по умолчанию; вы применяете source-NAT к пакетам, покидающим интерфейс на стороне "WAN".
Если брандмауэр находится в состоянии по умолчанию, вам понадобится только это одно правило:
iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
Если MTU в разных сетях отличается, вам может потребоваться применить исправление MSS:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
(это помогает решить проблему типа «ping работает, веб-сайты не работают» или «некоторые сайты работают, другие нет»).
Есть очень распространенный подвох. Я делаю это уже около 20 лет, и все еще часто забываю об этом, пока все не заработает, но что-то не заработает. Вам нужно явно включить пересылку пакетов в ядре:
sysctl net.ipv4.ip_forward=1
и установите ту же переменную, /etc/sysctl.conf
чтобы она была включена после загрузки.