Wi-Fiをアクセスポイントモードに簡単に切り替える

記事に基づいて( onetwo )。

このトピックはハブとGoogleで既に何度も議論されていることを知っていますが、マニュアルでアクセスポイントを「友人向け」にすることに決めたとき、特定の困難に直面し、既成のソリューションは湿気を帯びました。 したがって、経験の浅いGNU / Linuxユーザーは、私と同じ方法でこれを行うことをお勧めします。



他に何も手元にないときに3gモデム(および有線インターネット)からwi-fiを配布するのは高貴な理由なので、利益を得るための迅速な方法に沿って進みます。 この命令は、Debianベースのディストリビューションを対象としています。 hostapdが必要です-実際にはwi-fi、dnsmasqを配布するために-IPアドレスとnotify-sendを配布するため(必要ではありません)-通知のために。 現在、iptablesはそのまま使用できます。 hostapdを配置して停止します。



aptitude install hostapd service hostapd stop
      
      







ファイル/ etc / default / hostapdで、次の行のコメントを外して修正します。



 DAEMON_CONF="/etc/hostapd/hostapd.conf"
      
      







ファイル/etc/hostapd/hostapd.confを作成および編集します



 interface=wlan0 driver=nl80211 ssid=wifi_4_friends hw_mode=g channel=6 wpa=2 wpa_passphrase=12345678 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP auth_algs=1 macaddr_acl=0
      
      







ここではすべてが簡単です-アクセスポイントの名前、パスワード、ドライバーが動作するチャネル。

dnsmasqを配置して停止します。



 aptitude install dnsmasq service dnsmasq stop
      
      







dnsmasqは、すべてが揃っており、構成が簡単なので、優れています。 構成ファイル/etc/dnsmasq.confを開きます。



 interface=wlan0 dhcp-range=192.168.2.2,192.168.2.100,12h
      
      







ここではすべてが非常に簡単ですが、必要に応じて、代替のDNSサーバーを追加できます。また、ホストを127.0.0.1に強制的に送信してブロックすることもできます。 詳細については、man dnsmasqヘルプを参照してください。 もう1つ、dhcp範囲アドレスはwlan0と同じネットワーク上にある必要があります。 何らかの理由で、起動スクリプトでwlan0のIPアドレスを変更する必要がない場合は、wlan0のようにここでプールを指定します。 たとえば、自宅にはアドレス192.168.1.1とネットワーク192.168.1.0/24のルーターがあり、このスペース内でdhcp-rangeを指定する必要があります。また、ルーターのdhcpサーバーによって発行されたアドレスのプールと重複しないようにします。 より簡単な方法で、異なるサブネットを自分で指定します。



デーモンの起動をオフにします:



 update-rc.d hostapd disable update-rc.d dnsmasq disable
      
      







あとは、ルーティングを有効/無効にし、iptablesにルールを追加/削除するだけです



 sysctl net.ipv4.ip_forward=1 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
      
      







スクリプトを使用してこれを自動的に行います。 すべての準備が完了しました。wifi-apスクリプト自体は次のとおりです。



 #!/bin/bash #script to start/stop hostapd, dnsmasq, add/remove iptables rule set -e exec 3>&1 exec 2>&1 >> /tmp/wifi-ap function print_help(){ echo "Start/Stop Software Access Point" echo echo "Usage `basename $0` options..." echo "wifi-ap on to start Software AP" echo "wifi-ap off to stop Software AP" echo echo "log-file - /tmp/wifi-ap" echo } if [ $# = 0 ]; then print_help >&3 exit 0 fi if [ $1 = on ]; then ifconfig wlan0 192.168.2.1 service dnsmasq start sysctl net.ipv4.ip_forward=1 iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE service hostapd start notify-send --expire-time=4000 "Software Access Point" "<b>start</b>" exit 0 fi if [ $1 = off ]; then service dnsmasq stop service hostapd stop ifconfig wlan0 192.168.1.4 sysctl net.ipv4.ip_forward=0 iptables -D POSTROUTING -t nat -o ppp0 -j MASQUERADE notify-send --expire-time=4000 "Software Access Point" "<b>stop</b>" exit 0 fi
      
      







オンとオフの2つのパラメーターが必要です。 自分で簡単に修正でき、必要に応じて、ppp0インターフェースをeth0(または他のユーザーの裁量で)に置き換えることができます。



私はdebianユーザーであり、sudoを使用しませんが、必要になる場合があります。



良い使い方をしてください。



All Articles