结合DNSmasq+iptables使用AirPort Express实现无线访问因特网¶
AirPort Express通常在小型办公室或家庭网络中使用,只需要简单将 AirPort Express 连接到能够动态分配IP地址的局域网络,通过DHCP分配访问Internet的IP地址(类似 iptables配置因特网共享连接(ICS) )就可以让AirPort Express通过无线扩展,允许连接AirPort Express的无线客户端访问Internet。
问题来了,我们是不是必须要买一个宽带路由器才能使用AirPort Express呢?
显然不是,只需要有一个DHCP( DNSmasq )提供对应的网络配置就可以
上图中,在 HPE ProLiant DL360 Gen9服务器 服务器上部署 私有云架构 ,物理主机 zcloud
运行了 私有云DNS服务(dnsmasq)和共享因特网(ICS) ,最初只是作为私有网络的DNS解析。不过 DNSmasq 可以同时提供 DHCP 和 TFTP 服务,特别适合局域网无盘工作站部署。这里的架构,就是采用 DNSmasq 的DHCP服务来提供IP配置:
DHCP配置¶
在 私有云DNS服务(dnsmasq)和共享因特网(ICS) 配置的DNS基础上,添加DHCP配置来完成进一步的 部署DNSmasq :
dnsmasq添加DHCP配置¶
# 本地默认域名
local=/staging.huatai.me/
# 转发上游域名解析服务器,请求DNS解析
server=8.8.8.8
# 监听DNS请求的网卡接口
listen-address=192.168.6.200,127.0.0.1
# 扩展主机域名,也就是请求 zcloud 默认扩展成 zcloud.staging.huatai.me
expand-hosts
# 服务器提供解析的域名
domain=staging.huatai.me
# DNS解析缓存
cache-size=1000
# DHCP
dhcp-range=192.168.6.21,192.168.6.50,255.255.255.0,12h
dhcp-option=option:router,192.168.6.200
dhcp-option=option:dns-server,192.168.6.200
dhcp-authoritative
共享Internet连接¶
完成上述DHCP的IP配置之后,所有连接到AirPod Express的无线客户端都会将 HPE ProLiant DL360 Gen9服务器 服务器上的网络接口IP 192.168.6.200
作为默认网关,则该服务器需要提供 iptables配置因特网共享连接(ICS) 以允许无线客户端:
共享Internet连接¶
# squid transparent proxy
sudo iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to 192.168.6.200:3128
sudo iptables -t nat -A PREROUTING -i br0:1 -p tcp --dport 80 -j DNAT --to 192.168.6.200:3128
sudo iptables -t nat -A PREROUTING -i eno4 -p tcp --dport 80 -j REDIRECT --to-port 3128
# masquerade 192.168.6.0/24 & 192.168.7.0/24
sudo iptables -A FORWARD -o eno4 -i br0 -s 192.168.6.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -o eno4 -i br0:1 -s 192.168.7.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eno4 -j MASQUERADE
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"