在校园网中,Windows下可以wifi连接无线然后开热点共享给手机和ipad使用,但在Ubuntu开发环境下一直无法做到,最近终于搜到一个脚本,分享一下.
github: https://github.com/oblique/create_ap
里面介绍中有 You can create an AP with the same interface you are getting your Internet connection.
安装方法:
sudo apt install bash util-linux procps hostapd iproute2 iw haveged dnsmasq iptables git make
git clone https://github.com/oblique/create_ap
cd create_ap && sudo make install
使用方法:
1.查看无线网卡名称:
ifconfig
或者ip link
我的网卡名称为wlp2s0
2.我们使用github介绍的此方式:
Internet sharing from the same WiFi interface:(通过同一个wifi接口共享网络)
create_ap wlan0 wlan0 MyAccessPoint MyPassPhrase
sudo create_ap wlp2s0 wlp2s0 Ubuntu-wifi 23456789
3.后台运行可在语句后加&或者运行后:
ctrl+z
bg 1
4.开机启动:
因为路径问题所以预装服务(/usr/lib/systemd/system/create_ap.service)无法被systemd(Ubuntu18)识别到,将其移动一哈,然后修改其配置文件
sudo mv /usr/lib/systemd/system/create_ap.service /etc/systemd/system/
sudo nano /etc/create_ap.conf
配置文件
#频道
CHANNEL=default
#网关
GATEWAY=192.168.1.1
WPA_VERSION=2
ETC_HOSTS=0
DHCP_DNS=gateway
NO_DNS=0
NO_DNSMASQ=0
HIDDEN=0
MAC_FILTER=0
MAC_FILTER_ACCEPT=/etc/hostapd/hostapd.accept
#ap隔离
ISOLATE_CLIENTS=0
SHARE_METHOD=nat
IEEE80211N=0
IEEE80211AC=0
HT_CAPAB=[HT40+]
VHT_CAPAB=
#驱动程序
DRIVER=nl80211
NO_VIRT=0
#一般改为CN
COUNTRY=CN
#频率,可以上5ghz
FREQ_BAND=2.4
NEW_MACADDR=
DAEMONIZE=0
NO_HAVEGED=0
#wifi接口, 我的为wlp2s0
WIFI_IFACE=wlp2s0
#连接到internet的接口, 我的为wlp2s0
INTERNET_IFACE=wlp2s0
#ssid
SSID=Ubuntu-wifi
#密码
PASSPHRASE=23456789
USE_PSK=0
测试:
sudo systemctl start create_ap.service
sudo systemctl status create_ap.service
服务正常运行active(running)
开机启动:
systemctl enable create_ap.service
BUG
待机时会关闭网卡,可能导致服务运行失败,但服务进程并不退出,重启服务即可:
systemctl restart create_ap.service
原理解析:
查看系统iptables的nat表中增加如下条目
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT udp -- 192.168.1.0/24 macoo-X550VX udp dpt:domain redir ports 5353
REDIRECT tcp -- 192.168.1.0/24 macoo-X550VX tcp dpt:domain redir ports 5353
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 192.168.1.0/24 anywhere