环境说明:
操作系统Ubuntu 20.04 LTS
wlan0 以及成功连接上wifi获取IP 10.10.10.18/24
部署前需要准备环境
1、bridge-utils 网卡桥接工具
2、dnsmasq DHCPv4 服务器,DNS 服务器; 如需dhcpv6 还需要radvd
步骤
1、新增一个逻辑网卡 br0
brctl addbr br0
2、br0桥在物理网卡eth0
brctl addif br0 eth0
3、给br0指定一个IP地址
ifconfig br0 192.168.50.1 up
4、清除eth0的IP地址
ifconfig eth0 0.0.0.0 up
5、流量转发开启
nano /etc/sysctl.conf 在文本末尾新增一行 net.ipv4.ip_forward=1
保存配置 sysctl -p
6、配置流量出口 这里的wlan0 就是无线出口
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
7、配置dhcpv4 服务器
配置文件在 /etc/dnsmasq.conf
新增地址池;当前租期120秒。建议12h
新增地址池;当前租期120秒。建议12h
dhcp-range=192.168.50.50,192.168.50.150,120s
8、重启dhcp服务器
service dnsmasq start;
9、接上有线电脑就可以愉快的上网了
知识点:
如果发现你的电脑拿到了IP但是无法上网,那么很可能是路由的wlan0的 Metric 不是最小。导致默认流量并非走的wlan0;此时我们需要修改Metric改小 例如 (15)。
修改Metric的方式有很多种,但是我们针对当前ubuntu20.04 最好的方式是修改/etc/netplan/50-cloud-init.yaml
network:
ethernets:
eth0:
dhcp4: true
optional: true
version: 2
wifis:
wlan0:
dhcp4: true
routes:
- to: 0.0.0.0/0
via: 10.10.10.1
metric: 15
access-points:
"SSID":
password: "Password"
#!/bin/sh -e
######初始化,脚本第一次执行########
##环境支持;网桥配置工具
#apt-get install bridge-utils
#
##dhcp服务器支持
#apt-get install dnsmasq
#echo \'interface=eth0,br0\' > /etc/dnsmasq.conf
#echo \'dhcp-range=192.168.50.50,192.168.50.150,255.255.255.0,12h\' >> /etc/dnsmasq.conf
##添加dhcp 服务器61.139.2.69给dhcp客户端
#echo \'dhcp-option=6,61.139.2.69\' >> /etc/dnsmasq.conf
#
#开启内核转发
#echo \'net.ipv4.ip_forward=1\' >> /etc/sysctl.conf
#sysctl -p
##############初始化完成###############
echo \'第一次执行前请依据环境,执行上面初始化信息\'
#ip地址准备
#新增一个逻辑网络br0
brctl addbr br0
#添加物理网卡对br0的支持
brctl addif br0 eth0
#设置逻辑IP地址
ifconfig br0 192.168.50.1 up
ifconfig eth0 0.0.0.0 up
#硬件原因,配置耗时过长
echo \'please wait 10 second\'
sleep 10
#将wlan0作为输入源,流量转发,关键步骤
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
echo \'nat update success\'
##dhcp服务器启动
#cp /etc/dnsmasq.conf /etc/dnsmasq.conf.mibo.bak
systemctl restart dnsmasq.service
echo \'dhcp server restart success!!!!\'
echo \'如果无法获取到IP ,请手动执行 service dnsmasq restart\'
exit 0