イベント会場でWiMaxが入らなかったので急遽手元のPCをルータにした。
WiMax --- WiFi AP
ということでワークショップしようとしたが、これを
会場のWi-Fi --- 手元のPC --- HUB --- WiFi AP
とする。
DHCPサーバをインストール
$ sudo apt-get install isc-dhcp-server
デフォルトの設定は・・・
$ grep -v -e ^# -e ^\s*$ /etc/dhcp/dhcpd.conf
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 192.168.42.0 netmask 255.255.255.0 {
range 192.168.42.10 192.168.42.50;
option broadcast-address 192.168.42.255;
option routers 192.168.42.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
このままでいいかな。
自分のネットワークアドレスを192.168.42.1にしておく。
動作確認
有線で接続したクライアントにIPアドレスが割り振られて、PINGができればOK
IPフォワード
$ cat /proc/sys/net/ipv4/ip_forward
0
となったので
$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
bash: /proc/sys/net/ipv4/ip_forward: 許可がありません
リダイレクトを含む sudo なのでエラーが出る。これを解決するにはスマートなやりかたがあるが、単純に以下のようにして解決。
$ sudo bash
# echo 1 > /proc/sys/net/ipv4/ip_forward
# exit
なお、この設定だと電源切ると元に戻ってしまうので永続化するには
/etc/sysctl.conf
の
#net.ipv4.ip_forward=1
の行を有効化する
IPマスカレード設定
これを参考に
http://qiita.com/nanbuwks/items/c75f5ff8608e2060416a
現在のインターフェースを確認
$ ifconfig
enp0s25 Link encap:イーサネット ハードウェアアドレス f0:de:f1:be:4d:44
inetアドレス:192.168.42.1 ブロードキャスト:192.168.42.255 マスク:255.255.255.0
inet6アドレス: fe80::7eab:1c95:ca84:b503/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:9379 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:3554 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:922001 (922.0 KB) TXバイト:404865 (404.8 KB)
割り込み:20 メモリ:f2500000-f2520000
lo Link encap:ローカルループバック
inetアドレス:127.0.0.1 マスク:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 メトリック:1
RXパケット:6607 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:6607 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1
RXバイト:496392 (496.3 KB) TXバイト:496392 (496.3 KB)
wlp3s0 Link encap:イーサネット ハードウェアアドレス 64:80:99:6c:d8:ec
inetアドレス:160.194.82.50 ブロードキャスト:160.194.87.255 マスク:255.255.248.0
inet6アドレス: fe80::3578:9417:53c6:db6c/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
RXパケット:161182 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:137648 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:1000
RXバイト:127518838 (127.5 MB) TXバイト:26221617 (26.2 MB
初期化
sudo iptables -t nat -F
sudo iptables -F
sudo iptables -L
上のifconfigの結果を元に以下のようにする
sudo iptables -t nat -A POSTROUTING -o wlp3s0 -j MASQUERADE
sudo iptables -A FORWARD -i wlp3s0 -o enp0s25 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i enp0s25 -o wlp3s0 -j ACCEPT
電源切ると消えてしまうけどイベント用の一時的な設定なのでこれでいいかな。
なお、永続化するには
$ sudo bash
して
# iptables-save > iptables.dat
とする。
/etc/rc.localに
iptables-restore < /(path)/iptables.dat
を書き足す。
DNSマスカレード
$ sudo apt-get install dnsmasq
$ sudo /etc/init.d/dnsmasq start
$ sudo vim /etc/dhcp/dhcpd.conf
として、一番最後の
option domain-name-servers 8.8.8.8, 8.8.4.4;
を
option domain-name-servers 192.168.42.1;
にする。
$ sudo /etc/init.d/isc-dhcp-server restart
これでクライアントのアドレス取得し直すと名前解決ができるようになる。