Linux 网络架构搭建
路由器模式
AP Mode
ap mode 是设备通过无线路由器接入有线网络,所有连接到AP的设备在一个子网当中。WAN口是有线网络连接外网。
Reapter mode
Reapter mode是无线设备通过无线路由器接入无线网络,所有连接到reapter的设备在一个子网当中。 WAN口是无线网络连接外网。
Wireless Client Mode
设备具有无线联网功能,通过wifi直接连入网络。
WISP Mode
设备通过有线连入无线路由器,无线路由器通过无线连入网络。
Bridge Mode
设备A通过有线连接无线路由器A,无线路由器A开启桥接,无线路由器A通过无线连接无线路由器B,无线路由器B也开启桥接,设备B通过有线连入无线路由器B, 此时设备A和B连入同一个二层网络,在一个子网当中。
WISP Repeater Mode
在WISP模式的基础上,有无线设备连入无线路由器。
Bridge with AP Mode
在Bridge 模式的基础上有无线设备连入路由器。
软件
- dhcpc, dhcpd
- iptable
- brctl
- dnrd
- mdnsresponder
- wpa_supplicant, hostapd
网络架构搭建
Bridge Mode
#ifconfig eth0 up
# ifconfig wlan1 up
#ifconfig
eth0 Link encap:Ethernet HWaddr 12:A3:FB:CB:E6:7A
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14561 errors:0 dropped:16 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4395310 (4.1 MiB) TX bytes:0 (0.0 B)
Interrupt:10
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
wlan1 Link encap:Ethernet HWaddr 32:4A:26:A5:09:40
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
# brctl addbr br0 //add br0
# brctl addif eth0 br0 // add port eth0 to br0
# brctl addif wlan1 br0 //add port wlan1 to br0
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.12a3fbcbe67a no eth0
wlan1
# ifconfig br0 up
//create hostapd.conf and run hostapd on wlan1
# hostapd /var/nm/hostapd.conf -B
//run udhcpc on br0
# udhcpc -i br0 -R &
udhcpc: started, v1.27.2
udhcpc: sending discover
udhcpc: sending select for 10.0.15.222 //get ip 10.0.15.222
udhcpc: lease of 10.0.15.222 obtained, lease time 7200
deleting routers
adding dns 10.0.0.1
adding dns 0.0.0.0
Test
在开发板上ping gateway, 开发板是网桥节点。
# ping 10.0.1.1
--- 10.0.2.1 ping statistics ---
7 packets transmitted, 0 packets received, 100% packet loss
# ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1): 56 data bytes
64 bytes from 10.0.0.1: seq=0 ttl=64 time=0.942 ms
64 bytes from 10.0.0.1: seq=1 ttl=64 time=0.633 ms
64 bytes from 10.0.0.1: seq=2 ttl=64 time=0.616 ms
^C
--- 10.0.0.1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.616/0.730/0.942 ms
使用手机连接AP, 最后获得的ip跟网桥节点在同一个二层网络。
在板子上ping 手机。
# ping 10.0.15.223
PING 10.0.15.223 (10.0.15.223): 56 data bytes
64 bytes from 10.0.15.223: seq=0 ttl=64 time=11.775 ms
64 bytes from 10.0.15.223: seq=1 ttl=64 time=5.219 ms
64 bytes from 10.0.15.223: seq=2 ttl=64 time=317.198 ms
64 bytes from 10.0.15.223: seq=3 ttl=64 time=65.076 ms
^C
--- 10.0.15.223 ping statistics ---
5 packets transmitted, 4 packets received, 20% packet loss
round-trip min/avg/max = 5.219/99.817/317.198 ms
WISP repeater Mode
wisp mode 要求无线client 作为WAN口,有线设备和无线设备都能够通过router 上网。
这里主要的工作的是使用iptables实现NAT功能。
#ifconfig eth0 up
# ifconfig wlan1 up
# ifconfig wlan0 up
# brctl addbr br0
# brctl addif br0 eth0
# brctl addif br0 wlan1
# ifconfig br0 10.0.2.1 netmask 255.255.255.0
接下来是开启wpa_supplicant和hostapd
wpa_supplicant.conf 文件
ctrl_interface=/var/run/wpa_supplicant
update_config=1
network={
ssid="wifi_access"
scan_ssid=1
psk="12345678"
key_mgmt=WPA-PSK
}
运行wpa_supplicant -iwlan0 -Dnl80211 -c /var/nm/wpa_supplicant.conf -b br0 -B
hostapd.conf
interface=wlan1
ctrl_interface=/var/run/hostapd
hw_mode=g
ieee80211n=1
ssid="nick_dong_ap"
channel=1
wpa=2
wpa_passphrase=12345678
运行hostapd /var/nm/hostapd.conf -B
编辑udhcpd.conf
start 10.0.2.20
end 10.0.2.253
interface br0
max_leases 20
remaining yes
lease_file /etc/udhcpd.leases
opt dns 8.8.8.8
opt subnet 255.255.255.0
opt router 10.0.2.1
运行udhcpd -f /var/nm/udhcpd.conf
最后开启iptables NAT 转发。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
eth0 是LAN口,wlan1的AP也是LAN口,WLAN0作为WAN口。现在开发板就是一个router, 用电脑连接eth0, 用手机连接WLAN1做成的AP, 手机和电脑就在一个10.0.2.0/24子网内。iptables 完成WAN口向内部网络的转发。