IdeaPad S205 (Lenovo, 2011) にインストールした Fedora 21 で PPPoE クライアントと無線Wi-Fiルーターを構築した手順の記録です。
ルーティングとPPPoE接続ができないVDSL宅内装置を有線でラップトップに接続して、ラップトップをWi-Fiアクセスポイント、ルーター、さらにファイアウォールとして構築を試します。ブリッジは使用せず、NAT(DHCPサーバーとIPフォワーディング)を利用する方法で以下のRPMパッケージを使用します。
1. PPP通信を確立する
まず、ラップトップをインターネットに繋げるところからはじめます。pppoe-setup
で ISP から提供されたユーザ名とパスワードを設定して、pppoe-start
で接続を開始します。
2. 無線ネットワークインタフェースを有効化する
無線LAN側のゲートウェイを用意します。ip addr add <IFADDR> dev <DEVICE>
で無線ネットワークインタフェースにIPアドレスを設定した後、ip link set <DEVICE> up
でネットワークインタフェースを有効化します。利用できるネットワークインタフェース名はiw dev
コマンドで一覧を表示できます。
下の例では、クラスBのプライベートアドレス 172.16.1.1/24
をネットワークインタフェース wlp3s0
に割り当てています。
$ sudo ip addr add 172.16.1.1/24 dev wlp3s0
$ sudo ip link set wlp3s0 up
$ ifconfig wlp3s0
wlp3s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.16.1.1 netmask 255.255.255.0 broadcast 0.0.0.0
ether 94:39:e5:66:2e:b6 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3. Wi-Fiアクセスポイントデーモンを起動する
hostapdの設定ファイル /etc/hostapd/hostapd.conf
にSSID、パスフレーズ等を設定します。設定ファイルの用意ができたら sudo service hostapd start
でデーモンを起動します。
$ iw dev wlp3s0 info
Interface wlp3s0
ifindex 3
wdev 0x1
addr 94:39:e5:66:2e:b6
ssid Kalakaua Avenue
type AP
wiphy 0
channel 1 (2412 MHz), width: 20 MHz (no HT), center1: 2412 MHz
$ iw dev wlp3s0 station dump
Station 64:a7:69:7f:4c:f2 (on wlp3s0)
inactive time: 339 ms
rx bytes: 145278
rx packets: 1081
tx bytes: 222035
tx packets: 659
tx retries: 35
tx failed: 0
signal: -35 dBm
signal avg: -36 dBm
tx bitrate: 54.0 MBit/s
rx bitrate: 54.0 MBit/s
authorized: yes
authenticated: yes
preamble: short
WMM/WME: no
MFP: no
TDLS peer: no
Station 00:24:6b:5b:97:80 (on wlp3s0)
inactive time: 6764 ms
rx bytes: 81346
rx packets: 559
tx bytes: 247239
tx packets: 381
tx retries: 48
tx failed: 0
signal: -55 dBm
signal avg: -44 dBm
tx bitrate: 48.0 MBit/s
rx bitrate: 6.0 MBit/s
authorized: yes
authenticated: yes
preamble: long
WMM/WME: no
MFP: no
TDLS peer: no
この時点で子機がアクセスポイントに接続できるようになります。ただし、IPはまだ採番されません。
4. DHCPデーモンを起動する
DHCPの設定ファイル /etc/dhcp/dhcpd.conf
にネットワークアドレス、ブロードキャストアドレス、ネットワークマスク等を設定します。DHCPデーモンは sudo service dhcpd start
で起動します。
DHCPDARGS="wlp3s0";
subnet 172.16.1.0 netmask 255.255.255.0 {
range 172.16.1.2 172.16.1.254;
option routers 172.16.1.1;
option broadcast-address 172.16.1.255
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
}
DHCPが起動すると、IP採番待ちをしていた子機にアドレスがふられるようになります。
$ sudo arp
Address HWtype HWaddress Flags Mask Iface
172.16.1.2 ether 00:24:6b:5b:97:80 C wlp3s0
172.16.1.4 ether 64:a7:69:7f:4c:f2 C wlp3s0
ここまでで無線LANだけは構築できましたが、まだLANとWANが繋がっていません。後続の手順で、プライベートネットワークからインターネットへ接続できるようにiptablesのNAT機能を設定します。
5. 無線LANとPPPoEのパケットを転送する
IPフォワーディングの有効化を確認します。IPフォワーディングを一時的に有効化する場合のコマンドはsudo sysctl net.ipv4.ip_forward=1
。永続的に有効化する場合は /etc/sysctl.conf
に net.ipv4.ip_forward=1
を追記します。
有効化の確認後、プライベートネットワークから送信するパケットをPPPoEから送信するようネットワークアドレス変換します。追加したルールを機能させるには、既存のルールとの順序を確認しておく必要があります。
# POSTROUTINGチェインに、LANから送られるパケットをWANから送りだすよう変換するルールを追加します
$ sudo iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o ppp0 -j MASQUERADE
$ sudo iptables -t filter -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -t filter -A FORWARD -i wlp3s0 -o ppp0 -j ACCEPT
6. デーモンの自動起動を設定する
6-1. 無線ネットワークインタフェースの自動起動
/etc/sysconfig/network-scripts/ifcfg-<DEVICE>
に設定内容を記載します。
BOOTPROTO=none
DEFROUTE=yes
DEVICE=wlp3s0
HWADDR=94:39:e5:66:2e:b6
IPADDR=172.16.1.1
NETMASK=255.255.255.0
NETADDR=172.16.1.0
BROADCAST=172.16.1.255
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Wireless
6-2. hostapdの自動起動
$ sudo systemctl enable hostapd
6-3. dhcpdの自動起動
$ sudo systemctl enable dhcpd
6-4. iptablesのIPフォワーディング
IPフォワーディングを永続的に有効化するため、/etc/sysctl.conf
に次の設定値を追記します。
net.ipv4.ip_forward=1