なんで作ったの
自宅のアパートのISPから「オメーの部屋の接続台数へらせーや、他の部屋の連中の接続速度が落ちてるんじゃ」
と怒られたので仮想化基盤のサーバ群と通常のPCやスマフォなどの接続を分離したくてやってみた
参考にしたサイトの手順と違うとこ
今回参考にしたサイトと違う部分はUSB-NICを追加して追加したNICはLocal側とする部分と
WiFIに関しては設定自体は投入し実際には電波を発射しないで置く部分
WiFiの仮想デバイス追加
iw devコマンドでRaspberry PiのWiFIのMACアドレスを確認し、addrの箇所を控えておく
root@raspberrypi:~ # iw dev
phy#0
Unnamed/non-netdev interface
wdev 0x2
addr da:3a:dd:0a:96:c1
type P2P-device
Interface wlan0
ifindex 4
wdev 0x1
addr d8:3a:dd:0a:96:c1
type managed
channel 34 (5170 MHz), width: 20 MHz, center1: 5170 MHz
root@raspberrypi:~ #
仮想WiFIのデバイスを追加していく
iw phy phy0 interface add ap0 type __ap
ip link set ap0 address d8:3a:dd:0a:96:c1
再度iw devコマンドで追加されていることを確認する
root@raspberrypi:~ # iw dev
phy#0
Interface ap0
ifindex 5
wdev 0x3
addr d8:3a:dd:0a:96:c1
type AP
channel 34 (5170 MHz), width: 20 MHz, center1: 5170 MHz
Unnamed/non-netdev interface
wdev 0x2
addr da:3a:dd:0a:96:c1
type P2P-device
Interface wlan0
ifindex 4
wdev 0x1
addr d8:3a:dd:0a:96:c1
type managed
channel 34 (5170 MHz), width: 20 MHz, center1: 5170 MHz
root@raspberrypi:~ #
このままでは再起動を行うと追加した仮想WiFiデバイスが削除されてしまうため
udevを使用して再起動しても仮想WiFiデバイスを作成されるように設定ファイルを作成する。
なお、MACアドレスを指定している箇所は使用しているRaspberry PiのWiFIのMACアドレスにすること
vim /etc/udev/rules.d/99-ap0.rules
SUBSYSTEM=="ieee80211", ACTION=="add|change", ATTR{macaddress}=="d8:3a:dd:0a:96:c1", KERNEL=="phy0", \
RUN+="/sbin/iw phy phy0 interface add ap0 type __ap", \
RUN+="/bin/ip link set ap0 address d8:3a:dd:0a:96:c1"
必要なパッケージのインストールとDHCP関連の設定
hostapdとdnsmasqをインストールする。
インストール後にDHCPサーバの設定を行う前にRaspberry PiのLANのIPアドレスの固定設定をしておく。
実施後dnsmasqの設定を行う。
なお、IPのレンジについてはUSBNICと分けているが好みの問題だと思われるので好きに設定する
# DHCPサーバ設定(dnsmasq)
vim /etc/dnsmasq.conf
# eth1設定(USBNIC)
# IPのレンジ 192.168.0.10 ~ 192.168.0.110
# サブネット 255.255.255.0 (/24)
interface=eth1
dhcp-range=192.168.0.10,192.168.0.110,255.255.255.0,12h
# ap0設定(WiFIの設定だがほぼダミー設定)
# IPのレンジ 192.168.10.10 ~ 192.168.10.110
# サブネット 255.255.255.0 (/24)
interface=ap0
dhcp-range=192.168.10.10,192.168.10.110,255.255.255.0,12h
次にDHCPクライアントの設定を行う
vim /etc/dhcpcd.conf
# DHCPクライアント設定 eth1
# 効くかわからないが念のためnohook wpa_supplicantのオプションは入れておく
# 念のためIPv6の拒否設定も入れておく
# eth1のIPは192.168.0.1/24
interface eth1
static ip_address=192.168.0.1/24
nohook wpa_supplicant
noipv6
# DHCPクライアント設定 Wi-Fi
# ap0のIPは192.168.10.1/24
# こっちにもIPv6拒否設定入れておく
interface ap0
static ip_address=192.168.10.1/24
nohook wpa_supplicant
noipv6
hostapdの設定もしていくが、ほぼほぼダミー設定のため念のため入れる
# hostapdの設定は基本こっちもダミー設定に近い
vim /etc/hostapd/hostapd.conf
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
interface=ap0
driver=nl80211
ssid=rolly
hw_mode=g
country_code=JP
channel=11
ieee80211d=1
wmm_enabled=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_passphrase=P@ssW0rd
wpa_key_mgmt=WPA-PSK
rsn_pairwise=CCMP
hostapdの自動起動設定をいれておく
systemctl unmask hostapd.service
systemctl enable hostapd.service
WiFiも使う場合は以下のコマンドで有効化する
# wifi有効化
rfkill unblock wifi
# wifi無効化
rfkill block wifi
各サービスを再起動しておく
systemctl restart dhcpcd.service
systemctl restart hostapd.service
systemctl restart dnsmasq.service
USBNICとスイッチングハブを接続しUSBNIC配下のデバイスに設定したレンジのIPが割り振られているか確認する
root@raspberrypi:~ # arp -av
? (10.23.62.209) at 1c:98:ec:0f:d7:64 [ether] on eth0
? (10.23.62.1) at 00:80:6d:8f:ab:50 [ether] on eth0
? (10.23.62.66) at 30:9c:23:99:b7:48 [ether] on eth0
DAIV-DGZ520M4-SH2-DGP (192.168.0.77) at 00:e0:4c:68:01:c6 [ether] on eth1
ILO6CU6445M9H (192.168.0.15) at 1c:98:ec:0f:d7:66 [ether] on eth1
storageserver (192.168.0.13) at 1c:98:ec:0f:d7:65 [ether] on eth1
エントリ: 6 スキップ: 0 発見: 6
root@raspberrypi:~ #
ポートフォワーディング設定
ポートフォワーディング設定を行い,再起動しても行うように設定する
root@raspberrypi:~ # sysctl -w net.ipv4.ip_forward=1
root@raspberrypi:~ # echo net.ipv4.ip_forward=1 > /etc/sysctl.d/routed-ap.conf
root@raspberrypi:~ #
root@raspberrypi:~ # cat /etc/sysctl.d/routed-ap.conf
net.ipv4.ip_forward=1
root@raspberrypi:~ #
IPマスカレード設定を入れる
IPのレンジ分の設定を設定すること
# iptables設定
# eth1とap0でIPの設定を変更しているのでそれに合わせる
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 ! -d 192.168.10.0/24 -j MASQUERADE
netfilter-persistentをインストールしてiptablesの設定を保存する。
apt install netfilter-persistent iptables-persistent
root@raspberrypi:~ # netfilter-persistent save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save
root@raspberrypi:~ #
設定後ip aでIPが割り当たっているか確認し各サービスが再起動後も起動するようになっているか確認する
root@raspberrypi:~ # systemctl is-enabled dhcpcd.service
enabled
root@raspberrypi:~ # systemctl is-enabled hostapd.service
enabled
root@raspberrypi:~ # systemctl is-enabled dnsmasq.service
enabled
root@raspberrypi:~ #
今回設定した箇所でエラーになっている箇所がないか確認する
systemctl status dhcpcd.service
systemctl status hostapd.service
systemctl status dnsmasq.service
設定後の確認
USBNICとスイッチングハブを接続その配下に適当なPCを接続して、ネットにアクセスできることを確認する
Raspberry Piを再起動し、再度ネットにアクセスできるか確認し完了
参考にしたサイト
https://www.mikan-tech.net/entry/raspi-wifi-ap-sta
https://www.mikan-tech.net/entry/raspi-ap-sta-router