環境說明:
操作系統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