web-dev-qa-db-ja.com

2つのインターフェース間のiptables転送

だから私は2つのワイヤレスインターフェースを備えたLinuxボックスを持っています、1つはステーションでもう1つはAPです。

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

どんな助けでもありがたいです。

29
broody

まず、プライベートインターフェイスで接続しているホストがインターネットに出られるようにするには、インターフェイスをブリッジする必要はありません。一方のインターフェイスから入ってくるパケットを、もう一方のインターフェイスにルーティングして、野生に出ます。

そのためには、次のことだけを行う必要があります。

  1. Linuxボックスで転送を有効にします。
  2. 特定の(またはそのすべての)パケットがルーターを通過できるようにする
  3. 誰かが述べたように、netfilterはステートレスファイアウォールであるため、すでに確立されている接続のトラフィックを許可します
  4. インターネットに送信されるパケットの送信元アドレスを変更する

    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT
    iptables -A FORWARD -i wlan0 -o wlan1 -m state --state ESTABLISHED,RELATED \
             -j ACCEPT
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
    

それでうまくいくはずです。

39
Torian