ubuntu下使用openkeeper连接外网并通过无线网卡共享外网连接

Posted by Cai Qiqi on 2016-09-18

———————9月16日更————————–
今天发现坑的那个连接学校某台内网VPN服务器上外网的内网VPN服务器down了,于是回宿舍就自己断开了实验室的OpenKeeper。
这里写图片描述
好处就是,不管在实验室还是寝室,完全可以自己控制每一边的NetKeeper帐号的连接和断开操作。

断开的操作

先查看hostapd的状态,发现是正在运行的,则先断开hostapd关闭无线分享。

$ service hostapd status
$ service hostapd stop

———–9月18日 更——-
哦不行,像上面那样停止hostapd是不行的。用ps aux|grep hostapd之后发现hostapd 依然在运行。要结束它所在的进程才行。

$ sudo kill hostapd

就像/usr/sbin/myap里面写的一样,得结束掉hostapd所在的进程。

扫描当前物理环境的可用SSID

先要让wlan0网卡up。

$ sudo ip link set wlan0 up
#或者
$ sudo ifconfig wlan0 up

事实上,前者也是调用的后者。(这里网卡名称写错了所以没有执行,但是你懂我的意思)
这里写图片描述
然后当up的时候,可能会碰到困难,就是rf-kill问题。
直接

$ sudo rfkill unblock wifi

解除对wifi的限制。
参考:http://www.linuxdiyf.com/linux/18948.html

$ sudo iw dev wlan0 scan |grep SSID

这里写图片描述
知道了哪些wifi可连之后,就连它吧。

$ sudo iw dev wlan0 connect CQUPT

这里CQUPT是开放网络,所以可以直接连。如果是加密的就另说了。至于断开已连上的wifi,我网上找了一下然而并没有找到,说是直接关闭wifi就完事了。。。

$ sudo iwconfig wlan0 down

断开openkeeper

$ ok-stop

原文链接:
http://os.51cto.com/art/201407/446266.htm
https://my.oschina.net/oldfeel/blog/292264
需要安装两个工具:

$ sudo apt-get install hostapd dnsmasq

关键需要配置三个配置文件

$ sudo vi /etc/hostapd.conf
$ sudo vi /etc/dnsmasq.conf
$ vi /usr/bin/myap
#也许会用到下面这个
$ sudo vi /etc/NetworkManager/NetworkManager.conf

配置hostapd

$ sudo vi /etc/hostapd.conf
interface=wlan0
driver=nl80211
ssid=oldfeel # ssid 可以改成你喜欢的名字
hw_mode=g
channel=11
dtim_period=1
rts_threshold=2347
fragm_threshold=2346
macaddr_acl=0
auth_algs=3
ieee80211n=0
wpa=3
wpa_passphrase=12345678 #为了使密码后面没空格,看完之后删掉注释
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

进入hostapd的交互式命令行。

$ hostapd_cli

配置DNS

Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以为局域网电脑提供内网ip地址和路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适用于个人用户或少于50台主机的网络,我们将通过它来为我们接入后的客户端设备提供DHCP以及DNS服务。这样客户端就可以通过无线模拟AP顺利访问网络。
参考:http://os.51cto.com/art/201311/415573.htm

$ sudo vi /etc/dnsmasq.conf
interface=wlan0
bind-interfaces #这个是只监听wlan0,没有之会检测所有卡
except-interface=lo
dhcp-range=192.168.3.2,192.168.3.100,6h #设置dhcp地址范围,即租借时间6小时
dhcp-option=3,192.168.3.1 #为手机配置网关
dhcp-option=6,202.202.32.33 #为手机配置dns,请自己修改为外网的dns地址

编辑启动脚本

$ sudo vi /usr/bin/myap
#! /bin/sh
#为无线添加路由规则
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
iptables -A FORWARD -s 192.168.10.0/24 -o eth0 -j ACCEPT
#这里是将wifi的流量转发到`eth0`网卡上,于是可以通过eth0网卡能访问的地址(如内网BT Down铺),都可以通过wifi网络访问,如果要共享互联网连接,则需要将`eth0`改为上外网的网卡,比如`ppp0`。
iptables -A FORWARD -d 192.168.10.0/24 -m conntrack --ctstate ESTABLISHED,RELATED -i eth0 -j ACCEPT
#dnsmasq与named一般情况下bind的named会占了53端口,
#然后dnsmasq会启动不了,所以我用killall named来杀了named再启动dnsmasq。
killall hostapd
ifconfig wlan0 192.168.10.1
#“-B”后台运行,之后的hostapd.conf需要指名路径.
hostapd -B /etc/hostapd.conf
/etc/init.d/dnsmasq restart
#dnsmasq启动后会出现电脑突然上不了网,
#因为dnsmasq更改了/etc/resolv.conf的原因。可以在/etc/resolv.conf加一行
#nameserver x.x.x.x
#填入DNS服务器地址,根据自己的情况修改。
echo "nameserver 202.202.32.33" >> /etc/resolv.conf

将wifi流量转发到eth0网卡之后手机连接wifi之后访问学校内网资源

将wifi流量转发到ppp0网卡之后手机连接wifi之后访问外网资源

修改/usr/bin/myap权限

$ sudo chmod -R 777 /usr/bin/myap

确保系统打开转发功能

$ sudo su
# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# echo 1 >/proc/sys/net/ipv4/ip_forward
# exit

想共享wifi时,请保证电脑能上网,然后运行

$ sudo vi /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
dns=dnsmasq
no-auto-default=B4:B5:2F:CB:9E:5C,
[ifupdown]
managed=true

Bug fixed

这里写图片描述
『SIOCSIFFLAGS: Operation not possible due to RF-kill的解决』
http://www.linuxdiyf.com/linux/18948.html