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


26

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

wlan0(station)-インターネット接続に接続されています

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
IPTABLESはステートフルパケットフィルタであり、パケットを許可/ドロップ/マングルします。ルーターでもブリッジでもありません。コマンドはファイアウォールを調整してトラフィックを許可しますが、実際に転送することはしません。
ゾレダチェ

そのため、カーネルを必要な機能を備えたカーネルに置き換えてください。結局のところ、それは「Linuxボックス」です。
マイケルハンプトン

「ルート」でやろうとしていることを達成できますか?ブリッジサポートを使用してカーネルを再構築することも検討しますが、他のオプションがあるかどうか疑問に思います。
-broody

ルートは、有効になったらどこに行くかを指示します。マイケルは、ルーティングをサポートするために何をする必要があるかを教えてくれました。次に、sysctlを使用して有効にする必要があります。
マゼラン

回答:


35

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

それを行うには、次のことだけが必要です。

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

それはそれを行う必要があります。


おそらくあなたが意味すると思います:echo 1 >/proc/sys/net/ipv4/ip_forward最初の行のために
ジェイソンタン

それだけです...その行の最後の部分に何が起こったのか分かりません...修正されました。
トリアン

また、Linuxボックスをゲートウェイとして使用するようにクライアントを設定する必要があると思います。
ジェイソンタン

そして、転送を行うために、あなたがこれをやりたいのリブートを通じて持続:「エコー『net.ipv4.ip_forward = 1』 >> /etc/sysctl.confの」
ジェイソン・タン

1
はい@StudentsTea、あなたが、あなたの場合を除きiptablesFORWARDテーブルはグローバル受諾ポリシーに設定されています。natただし、どちらの方法でもテーブルルールが必要です。
トーマスウォード
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.