hostapdのNAT iptablesルールの使用方法


9

私のPCには2つのネットインターフェイスwlan0&が装備されeth0ています。WiFiポートをのアクセスポイントとして使用したいと思いますwlan0

  • 私はhostapdファシリティを使用しましたが、ローカルネットワーク内のルーティングモードで適切に機能します。ユーザーはアクセスポイントに接続でき、DHCPは両方のセグメントで正しく機能します。
  • を搭載したPCにhostapdはファイアウォールやiptablesルールがありません(iptablesファイアウォールは無効になっています)。これは、ADSLルーターの組み込みファイアウォールのみを使用したいためです。

私のネット構成は次のとおりです:

  • PC with hostapd -> cable connection -> ADSL router
  • wlan0 -> eth0 <-> 192.168.0.1 <-> internet
  • 192.168.10.1 -> 192.168.0.7 -> static routing to 192.168.10.X

PC ifconfig

eth0  Link encap:Ethernet  HWaddr 00:12:3F:F2:31:65
      inet addr:192.168.0.7  Bcast:192.168.0.255  Mask:255.255.255.0
      inet6 addr: fe80::212:3fff:fef2:3165/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2169539 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1008097 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:3056198487 (2.8 GiB)  TX bytes:72727161 (69.3 MiB)
      Interrupt:16

lo    Link encap:Local Loopback
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
      RX packets:3398 errors:0 dropped:0 overruns:0 frame:0
      TX packets:3398 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:495444 (483.8 KiB)  TX bytes:495444 (483.8 KiB)

mon.wlan0  Link encap:UNSPEC  HWaddr 00-14-A5-04-94-3C-90-F0-00-00-00-00-00-00-00-00
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:151 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:17092 (16.6 KiB)  TX bytes:0 (0.0 b)

wlan0 Link encap:Ethernet  HWaddr 00:14:A5:04:94:3C
      inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
      inet6 addr: fe80::214:a5ff:fe04:943c/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1502 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:0 (0.0 b)  TX bytes:279392 (272.8 KiB)

iptablesPCで単純なNAT構成を構成するにはどうすればよいですか?

  • hostapd(ネットワーク192.168.10.X)を介してネットワークに接続しているすべてのユーザーにインターネットへのアクセスとインターネットからのアクセスを許可します
  • トラフィックをフィルタリングしたくありません。NATのみです。

WiFiセグメントからインターネットに接続できません。

  • WiFiに接続しているクライアントにはDHCPアドレス192.168.10.48があり、唯一のトラフィックはeth0送信元アドレスにあります:
    16:50:14.671587 ARP, Request who-has 192.168.0.48 tell 192.168.0.1, length 46
    
    注:アドレスがで192.168.0.48ない192.168.10.48ため、マスカレードシームが機能します。
  • 192.168.0.1以前は可能だった[ADSLルーター]へのpingができなくなりました。
  • インターネットからWIFIユーザーへのアクセスはどうですか?もちろん、ADSLルーターでセットアップし、特定のIPポートプールをインターネットからそのようなWiFiユーザーの特定のIPアドレスに転送します。

編集1:

  • systemctl次のように表示さiptablesれます:
    iptables.service          loaded active exited
    
    私が走ったとしても:
    systemctl enable iptables.service
    systemctl start iptables.service
    

編集2:

  • 動作しますが、コンピュータを起動するたびに、起動スクリプトを使用して以下を手動で追加する必要がありますか?
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

以下の私の更新された応答を参照してください...
MLu 2013

回答:


6

最も単純な形で:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

これにより、すべてのWiFiユーザーがインターネットにアクセスできるようになります。

もちろん、他のルーティング設定がすでに完了していると仮定します。

  1. カーネルで有効な転送

    sysctl net.ipv4.ip_forward=1
    
  2. で転送が有効になっていiptablesます:

    iptables -P FORWARD ACCEPT
    iptables -F FORWARD
    

問題が発生tcpdump -nn -i eth0eth0た場合にトラフィックを監視して、適切にNAT処理されているかどうか、応答が戻ってきているかどうかなどを確認するために使用します。

編集: 「コンピューターを起動するたびに(起動スクリプトから)手動で追加する必要があります...」 これは、使用しているLinuxディストリビューションによって異なります。悲しいことに、ほとんどのディストリビューションにはそれぞれ独自のファイアウォールツールiptablesがあります。最終的には呼び出しているだけですが、何らかの理由で、著者はiptablesの動作を難読化することがユーザーの望みであると信じています。

あなたの質問に答えるために-ほとんどの場合、このNATルールを自動的に追加するようにファイアウォールを設定できます。ただし、正確な方法は、正当な理由もなくLinuxディストリビューションによって異なります。悲しいが本当。


PC上のすべてのファイアウォールが無効になっています。実行中の唯一のサービスはiptablesです
mackowiakp 2013

iptables == firewall-どういうわけか、そのMASQUERADEルールを発行するようにiptablesを設定する必要があります。どうやって?Linuxディストリビューションによって異なります。どこかに設定ファイルがなければなりません。どこ?Linuxディストリビューションによって異なります。
MLu 2013

だからあなたはmu iptablesを支配しています:
mackowiakp

したがって、mu iptablesがルール化されています:[root @ media〜]#iptables -L Chain INPUT(policy ACCEPT)target prot opt source destination Chain FORWARD(policy ACCEPT)target prot opt source destination Chain OUTPUT(policy ACCEPT)target prot opt source destination 。そして私とスタートアップのそのような行:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE。したがって、iptablesの私の実装は、事実上「透過的な」ファイアウォール-またはファイアウォールなし
mackowiakp

5

あらゆる場面でファイアウォールを作成しました。使用する前に、READMEとSCRIPTをお読みください。HOSTAPに必要なルールを含めました

必須パーツ:

HostAP

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

HostAPが機能するには、両方ともACCEPTである必要があります

iptables -A INPUT -j ACCEPT >> /dev/null 2>&1 
iptables -A OUTPUT -j ACCEPT >> /dev/null 2>&1

https://github.com/diveyez/fw.sh

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.