2012年03月14日
Ubuntuで無線LANルーターを構築する
時々ですけど外出先で一つしか無いデータ通信端末(USBスティック)とMac OSのインターネット共有機能(Wi-Fiルーター機能)を使って、その他のパソコン、iPhoneからインターネットに接続することがありまして、これをXubuntuで出来るようにしておきたいなぁ・・・ということで、手順を整理してみまた。
単純なアクセスポイントを作るだけであればUbuntuにルーター機能は必要無いんですが、今回の目的はグローバルIPアドレスが割り当てられた回線(イーモバイルのデータ通信端末)を共有したいのでルーター(NAT)機能も使います。
当たり前ですが、無線LANルーターの役目をするUbuntu(実際にはXubuntu使ってます)パソコンには無線LANアダプタともう一つのネットワーク・インタフェース(有線ポートまたはデータ通信用USBスティック)が必要です。
単純なアクセスポイントを作るだけであればUbuntuにルーター機能は必要無いんですが、今回の目的はグローバルIPアドレスが割り当てられた回線(イーモバイルのデータ通信端末)を共有したいのでルーター(NAT)機能も使います。
当たり前ですが、無線LANルーターの役目をするUbuntu(実際にはXubuntu使ってます)パソコンには無線LANアダプタともう一つのネットワーク・インタフェース(有線ポートまたはデータ通信用USBスティック)が必要です。
hostapd(WI−FIアクセスポイントデーモン)のインストールと設定
アクセス・ポイントの構築は比較的簡単に動かすことができるhostapdを使います。
ソフトウェア・センターからでもインストールできると思いますが、ここでは端末(ターミナルエミュレータ)から次のコマンドでインストール。
$ sudo apt-get install hostapd
hostapdの設定は/etc/hostapd/hostapd.confファイルで行います。
vi又はgeditで/etc/hostapd/hostapd.confを開いて、
$ sudo vi /etc/hostapd/hostapd.conf
(viが苦手な人はgeditで。geditがなければsudo apt-get install geditでインストール)
次に示す項目を設定します。
#アクセス・ポイントとして利用する無線LANインタフェース名interface=wlan0#無線LANアダプタのドライバdriver=nl80211#クライアントに表示される無線LANアクセス・ポイント(SSID)名ssid=XUBUNTUhw_mode=gchannel=7wpa=2 # WPA2#認証パスワードwpa_passphrase=MYPASSWORDwpa_key_mgmt=WPA-PSKrsn_pairwise=CCMP
interfaceは無線LANで利用するインタフェース名で、通常1つしか無線LANインタフェースは無いはずでwlan0です。 心配な人は$ ifconfigと入力して表示されるインタフェース名(wlan*)を確認して下さい。
表示される値と、こちらのページを参考に指定します。
僕の場合はmac80211なのでnl80211を指定(よくわからない・・・という人は、まずnl80211で試してみましょう)。
DHCPサーバのインストールと設定
hostapdで用意した無線LAN側ネットワークに接続したクライアント端末にIPアドレスをリースしてあげる為にDHCPサーバ(ISC-DHCP)を用意します。
まずは次のコマンドでインストール。
$ sudo apt-get install isc-dhcp-server
設定は/etc/dhcp/dhcpd.confファイルで行います。
$ sudo vi /etc/dhcp/dhcpd.conf
設定する項目は次の通り。
default-lease-time 600;max-lease-time 7200;INTERFACES="wlan0";option domain-name "";max-lease-time 7200;log-facility local7;subnet 10.0.0.0 netmask 255.255.255.0 {range 10.0.0.10 10.0.0.20; # リースするIPのレンジ(範囲)option routers 10.0.0.1; # クライアントから見てゲートウェイ・アドレスとなるwlan0のIPアドレス。option domain-name-servers 8.8.8.8; # 公開DNSサーバ}
ここではwlan0で受信したDHCP要求に対し、 10.0.0.10〜20の範囲でIPアドレスをリースします。
option routersはDHCPオプションでクライアントに伝えるデフォルト・ゲートウェイのIPアドレスでwlan0のIPアドレスになります。
※この時点ではwlan0にIPアドレスは設定していないのでisc-dhcp-serverは起動しません。
ルーター設定
最後にUbuntuをNATルーターにします。10.0.0.0/24に接続したクライアントからのパケットをグローバル側のアドレスに変換してインターネットと接続してあげます。
$ sudo iptables -t nat -A POSTROUTING -s "10.0.0.0/255.255.255.0" -o ppp0 -j MASQUERADE
ppp0はイーモバイルなどのデータ通信端末で接続した場合に設定されるPoint to Point Protocolインタフェースの名前です。心配な人はインターネットに接続したら後に$ ifconfigでインタフェース名を確認してください。
あと、もう一つ次のコマンドで2つのネットワークの中継器として使うことを宣言します。
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
Wi-Fiルーターの起動
さあ、準備は出来ました!用意したサービスを起動してみましょう。
まずは無線LANインタフェース(wlan0)にIPアドレスを設定します。ここでは10.0.0.1。
$ sudo ifconfig wlan0 10.0.0.1 netmask 255.255.255.0 up
続いてDHCPサーバを起動。
$ sudo /etc/init.d/isc-dhcp-server start
NAT(アドレス変換)、パケット中継(ブリッジ)を開始。
$ sudo iptables -t nat -A POSTROUTING -s "10.0.0.0/255.255.255.0" -o ppp0 -j MASQUERADE
$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
最後にhostapdを起動。
$ sudo hostapd /etc/hostapd/hostapd.conf
ここまでできたらクライアント側端末からアクセスしてみましょう。設定したSSID名が見えましたか?
認証・接続後、インターネットに接続できれば無事完了。
もっと簡単に・・・
多分このままだと、いざという時に手順を忘れるので、簡単なシェル・スクリプトを用意してみました。
ご参考程度に。こちらからwfrouter.zipをダンロードし、ファイルを解凍します。
この中に含まれるstart.shを実行するとこの記事にあるのと同じ設定でWi-Fiルーターとして動作します(多分)。
$ sudo /path/to/wfrouter/bin/start.shStarting AP INTERFACE wlan0...Starting DHCPD...* Starting ISC DHCP server dhcpd [ OK ]Starting IP MASQUERADE...Starting APD...
停止はstop.sh。
$ sudo /path/to/wfrouter/bin/stop.shStopping DHCPD...* Stopping ISC DHCP server dhcpd [ OK ]Stopping APD...
動作設定はwfrouter/bin/setenv.shに集めています。
WIFI_IF=wlan0WIFI_DRIVER=nl80211SHARE_IF=eth0#SHARE_IF=ppp0AP_SSID=UBUNTUAP_WPA_PASSPHRASE=passwd1234567890AP_CHANNEL=3AP_NETWORK=10.0.0.0AP_NETMASK=255.255.255.0AP_RANGE="10.0.0.10 10.0.0.20"AP_ROUTER=10.0.0.1AP_DNS=8.8.8.8
有線LANを共有したい人はeth0をそのまま指定し、僕と同じようにデータ通信端末を共有する場合はppp0を有効にしてください。
尚、このシェルはdhcpd.conf及びhostapd.confを自動生成して上書きします。もし、既に何かしらの用途で使っていて設定ファイルが消えると困る、という方は事前にコピーをとっておいてください。
PLANEX 150MbpsリアルポータブルWi-Fiポケットルータ (ちびファイ) MZK-RP150N
posted with amazlet at 12.03.14
プラネックス (2011-04-28)
売り上げランキング: 438
売り上げランキング: 438
Logitec 無線LANルータ mobileRouter 150Mbps iPhone/iPad/iPod touch用 LAN-W150N/RIPB
posted with amazlet at 12.03.14
エレコム (2010-12-03)
売り上げランキング: 304
売り上げランキング: 304
この記事へのトラックバックURL
この記事へのコメント
こんにちわ、こちらのページを参考にubuntuのAP化をさせてもらっております。
そちらの記事に従って設定をしたのですが、どうしてもわからないことがありましたので質問させていただきたいと思い、コメントしました。
設定は上記のとおりなのですが、
最後に sudo hostapd /etc/hostapd/hostapd.conf
にてスタートしたところ、
IEEE802.11 deassociated とエラーがでてしまいます。
このときはどういった対応をすればよろしいのでしょうか?
PC:ubuntu 12.04 ルーター:WLI-UC-GNMです。
お分かりになるようでしたら、よろしくお願いいたします。
そちらの記事に従って設定をしたのですが、どうしてもわからないことがありましたので質問させていただきたいと思い、コメントしました。
設定は上記のとおりなのですが、
最後に sudo hostapd /etc/hostapd/hostapd.conf
にてスタートしたところ、
IEEE802.11 deassociated とエラーがでてしまいます。
このときはどういった対応をすればよろしいのでしょうか?
PC:ubuntu 12.04 ルーター:WLI-UC-GNMです。
お分かりになるようでしたら、よろしくお願いいたします。
Posted by 通りすがり at 2012年12月22日 14:30
頂いたエラーを詳しくは調べていないのですが、apt-getでインストールされるhostapdは確か0.7系だったと思います。こちら使っていて気がついたのですが、バグが多いようです。
本家サイト(http://hostap.epitest.fi/hostapd/)から最新版をダウンロードし、以下の手順でインストール確認したらどうなるでしょうか?
$ sudo apt-get install libnl-dev
$ tar xvzf hostapd-1.0.tar.gz
$ cd hostapd-1.x/hostapd
$ cp defconfig .config
$ sudo make
$ sudo make install
$ hostapd -v
hostapd v1.x)
本家サイト(http://hostap.epitest.fi/hostapd/)から最新版をダウンロードし、以下の手順でインストール確認したらどうなるでしょうか?
$ sudo apt-get install libnl-dev
$ tar xvzf hostapd-1.0.tar.gz
$ cd hostapd-1.x/hostapd
$ cp defconfig .config
$ sudo make
$ sudo make install
$ hostapd -v
hostapd v1.x)
Posted by netbuffalo(管理者) at 2012年12月23日 01:36
ご参考に僕のhostapd.confの内容を以下に示します。
$ cat /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=Sputnik
hw_mode=g
channel=7
wpa=1
wpa_passphrase=********
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP
wpa_ptk_rekey=600
$ cat /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=Sputnik
hw_mode=g
channel=7
wpa=1
wpa_passphrase=********
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP
wpa_ptk_rekey=600
Posted by netbuffalo(管理者) at 2012年12月23日 01:37
2年も前のお話に失礼します。
参考にさせて頂き、大変助かりました。
ただ、最終的にルーティングにbridge-utilsを使いました。
原理はページオーナー様の考え方がもっとシンプルだと思います。
出先であれば対応すべきケースも多々有りましょうし。
今回の私は自宅鯖AP化だったので、自宅セグメントで統一を目指しました。
ここのページの説明でwlan0の設定はほぼ完璧に動きました。
ありがとうございます。ただただお礼を述べるばかりです。
Posted by 通りすがり at 2014年04月21日 09:19
通りすがりさん、コメントありがとうございます。
bridge-utilsを使った透過的AP、ネットワーク共有の方が家庭内ではベストですよね。
僕もどちらを記事にするか迷ったのですが自宅外の施設ではアドレス代理・NAT型ルータの方が無難よいかと思い選択しました。今後ともよろしくお願い致します。
bridge-utilsを使った透過的AP、ネットワーク共有の方が家庭内ではベストですよね。
僕もどちらを記事にするか迷ったのですが自宅外の施設ではアドレス代理・NAT型ルータの方が無難よいかと思い選択しました。今後ともよろしくお願い致します。
Posted by netbuffalo at 2014年04月21日 10:57