ThinkPad X121e の Ubuntu 12.10 を無線ルータとして動作させる
Ubuntu 12.10 をインストールして使用している ThinkPad X121e の有線 LAN がインターネットにつながっている。 無線 LAN にタブレットなどを接続して X121e 経由でインターネットに接続したい。 つまり、X121e をルータとして動作させたい。 ほぼ http://tmtms.hatenablog.com/entry/2012/11/17/002416 の通りに実行した。 以下の作業は root 権限が必要。
アクセスポイント (hostapd)
まず、無線 LAN をアクセスポイントとして動作させる。
apt-get install hostapd
次のような /etc/hostapd/hostapd.conf を作る。
interface=wlan0
driver=nl80211
ssid=YOUR_SSID
hw_mode=g
channel=11
wpa=2
wpa_passphrase=YOUR_PASSWORD
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
次のように実行して他の機器からアクセスポイントが見えていれば OK。
hostapd /etc/hostapd/hostapd.conf
/etc/default/hostapd に /etc/hostapd/hostapd.conf を設定ファイルとするように
DAEMON_CONF="/etc/hostapd/hostapd.conf"
を書き込む。これで
service hostapd start
で起動して
service hostapd stop
で終了する。
DHCP server
アクセスポイントに接続した機器に IP アドレスを振り分ける。 ここでは 192.168.150.* のアドレスを使っている。
apt-get install isc-dhcp-server
/etc/dhcp/dhcpd.conf に次を書き加える。
subnet 192.168.150.0 netmask 255.255.255.0 {
range 192.168.150.10 192.168.150.254;
option domain-name-servers 8.8.8.8;
option routers 192.168.150.1;
default-lease-time 600;
max-lease-time 7200;
}
/etc/default/isc-dhcp-server で
INTERFACES="wlan0"
とする。次のようにして、X121e の無線 LAN の IP アドレスを 192.168.150.1 にして DHCP サーバを起動する。
ifconfig wlan0 192.168.150.1 netmask 255.255.255.0
service isc-dhcp-server start
他の機器から上で指定した SSID に接続して IP アドレスを取得できれば OK。
NAT
192.168.150.* の中では通信できるのだが、X121e に接続した機器はインターネットに接続することができない。 NAT の設定をする。
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 192.168.150.0/24 -o eth0 -j MASQUERADE
これで他の機器もインターネットに接続することができるはず。
hostapd を起動しないようにする
このままだと Ubuntu の起動時に hostapd が実行されるようになっている。 hostapd は手動で実行するとき以外は起動しないようにしたい。
apt-get install sysv-rc-conf
sysv-rc-conf
として hostapd のところのチェックを外せば良い。 isc-dhcp-server も手動で実行するようにしたいが、 isc-dhcp-server はすでにチェックが外れていたので設定は不要。
実行スクリプト
必要なときだけ hostapd を実行したいので以下のスクリプトを作成した。
hostapd の設定ファイルを切替えて実行したいのだが、/etc/init.d/hostapd を見ると
service hostapd start
を実行するときの環境変数が /etc/default/hostapd で設定されていて、 /etc/hostapd/hostapd.conf を使うようになっている。
/etc/init.d/hostapd の start の処理をコピーして、環境変数 HOSTAPD_CONF を見るようにした。
HOSTAPD_CONF="/path/to/hostapd.conf" ./ap_start
のようにして設定ファイルを切り替えて hostapd 実行することができる。 終了は
./ap_stop
とする。