Пересылка iptables между двумя интерфейсами

Итак, у меня есть linux box с двумя беспроводными интерфейсами, один - станция, а другой - точка доступа.

wlan0 (станция) - подключен к интернету

wlan1 (AP) - к нему подключаются другие клиенты.

Я хотел бы, чтобы клиенты, подключенные к wlan1, имели доступ к Интернету на wlan0. И я хотел бы сделать это с iptables, так как мое ядро ​​не имеет поддержки моста...

Вот что я пробовал до сих пор с iptables, но он не работает:

iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT

Буду признателен за любую помощь.

1 ответ

Решение

Во-первых, чтобы узлы, подключающиеся через ваш частный интерфейс, могли выходить в Интернет, вам не нужно соединять интерфейсы, вам нужно перенаправлять пакеты, поступающие на один интерфейс, на другой, где они выходят в дикую природу.

Для этого вам нужно только:

  1. Включите переадресацию на вашем linux box:
  2. Разрешить определенным (или всем этим) пакетам проходить через ваш маршрутизатор
  3. Как кто-то сказал, так как netfilter - это брандмауэр без сохранения состояния, разрешите трафик для уже установленных соединений
  4. Изменить исходный адрес пакетов, выходящих в интернет
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -A FORWARD -i wlan1 -o wlan0 -j ПРИНЯТЬ
    iptables -A FORWARD -i wlan0 -o wlan1 -m состояние - УСТАНОВЛЕНО, СВЯЗАНО \
             -J ПРИНЯТЬ
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

Это должно сделать это.

Другие вопросы по тегам