web-dev-qa-db-ja.com

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

私のPCには、wlan0とeth0の2つのネットインターフェイスが装備されています。 WiFiポートをwlan0のアクセスポイントとして使用したい。だから私はhostapd機能を使用し、ローカルネットワークのルーティングモードで正しく動作します。ユーザーはそのように作成されたアクセスポイントに接続でき、DHCPは両方のセグメントで正しく機能します。 hostapdを搭載したPCには、ファイアウォールやiptablesルールがありません(iptablesとファイアウォールが無効になっています)。 ADSLルーターに組み込まれているファイアウォールのみを使用したい。

私のネット設定は次のとおりです

...... hostapdを備えたPC .................ケーブル接続.................. ADSLルーター

..... wlan0 .............. eth0 ..... <----------------------- -------> ........... 192.168.0.1 ...................... <--->インターネット192.168.10.1 ... 192.168.0.7 ..............................静的ルーティングを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)

私はiptablesではまったく初心者です。だから、誰かが私に簡単なNAT iptables configをPCで設定するのを手伝ってくれませんか?hostapd(ネットワーク192.168.10.X)経由でネットワークに接続しているすべてのユーザーにインターネットへのアクセスとインターネットからのアクセスを許可しますか?トラフィックをフィルタリングしたくありません。NATだけをフィルタリングします。


OK、THX。しかし、WiFiセグメントからインターネットに接続できません。 WiFiに接続されたクライアントのアドレスは192.168.10.48(DHCP経由)です。このアドレスからeth0ポートで気づくことができるinlyトラフィックは

16:50:14.671587 ARP, Request who-has 192.168.0.48 tell 192.168.0.1, length 46

注意-アドレスは192.168.10.48ではなく192.168.0.48です。したがって、マスカレードの継ぎ目が機能します。

イーブン192.168.0.1にpingできない-ADSLルーターのポート。以前は可能でした。

そして、インターネットからWIFIユーザーへのアクセスはどうですか?もちろん、ADSLルーターでセットアップし、特定のIPポートプーリングをインターネットからそのようなWiFiユーザーの特定のIPアドレスに転送します。

編集

systemstlは、iptablesが以下であることを示しています。

iptables.service          loaded active exited

しかしもちろん私は走ります:

systemctl enable iptables.service
systemctl start iptables.service

編集

動作します!ただし、(起動スクリプトから)コンピューターを起動するたびに手動で追加する必要があります。

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

それは正常な状況ですか?

8
mackowiakp

最も単純な形式:

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 eth0を使用してeth0のトラフィックを監視し、適切にNAT処理されているかどうか、応答が戻ってきているかどうかなどを確認します。

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

あなたの質問に答えるために-おそらくあなたのファイアウォールはこのNATルールを自動的に追加するように構成することができます。しかし正確な方法は正当な理由もなくLinuxディストリビューション間で異なります。悲しいですが本当です。

6
MLu

私はあらゆる場面でファイアウォールを作成しました。使用する前にREADMEとスクリプトをお読みください。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

5
Ricky Neff