-、通过 hostapd、dhcp 和 iptables 创建 wifi 热点
我早在三年前,就注意 android 了。不过最近才买了台天宇 w719,而之前我一直在用 MTK 平台手机。
买手机之前一个星期内,我通过互联网,非常详细的有了解了一遍 android。我打算将它打造成一种超级装备: 因为我用的系统是 fedora17 系统,笔记本自带的网卡支持 AP,所以我打算通过 ssh 达成手机与笔记本的互访。
补注:
在往下进行时,请确定自己的网卡支持 AP,检查方法:
iwlist
有 AP 一项则表示支持 AP。
在 linux 系统上安装 ssh 是非常方便的。比如,我用的 rpm 系的,那么:用 vim 编辑,文件的内容如下:
配置好后, 执行:
- #This will give you a minimal,
- insecure wireless network.##DO NOT BE SATISFIED WITH THAT !! !##A complete,
- well commented example configuration file is#available here: ## / usr / share / doc / hostapd - 0.7.3 / hostapd.conf##For more information,
- look here: ##http: //wireless.kernel.org/en/users/Documentation/hostapd
- #ctrl_interface = /var/run / hostapd ctrl_interface_group = wheel#Some usable
- default settings...#指定MAC地址过滤规则,0表示除非在禁止列表否则允许,1表示除非在允许列表否则禁止accept_mac_file = 指定允许MAC列表文件位置,且一行一个deny_mac_file = 指定禁止MAC列表文件位置,且一行一个auth_algs = 1 ignore_broadcast_ssid = 0#Uncomment these
- for base WPA & WPA2 support with a pre - shared key#密码的安全类型wpa = 3 wpa_key_mgmt = WPA - PSK wpa_pairwise = TKIP rsn_pairwise = CCMP#DO NOT FORGET TO SET A WPA PASSPHRASE !! #写自己的wifi密码wpa_passphrase = ****#Most modern wireless drivers in the kernel need driver = nl80211 driver = nl80211#Customize these
- for your local configuration...#ssid处写热点的名称interface = wlan0 hw_mode = g channel = 6 ssid = xxx country_code = US
配置好后, 执行:
- #ddns - update - style interim;#ignore client - updates;#sunnet后面的地址可以根据自己的情况写成192.168.0.0之类的subnet 10.10.0.0 netmask 255.255.255.0 {#---
- default gateway设置客户端的相关选项#允许dhcpd服务分配的ip区间,也就说,比如我设置的可以连接15台设备。这是hostapd模拟AP的优势所在range 10.10.0.2 10.10.0.16;
- option routers 10.10.0.1;#路由#option subnet - mask 255.255.255.0;#option nis - domain "domain.org";#option domain - name "domain.org";
- option domain - name - servers 8.8.8.8,
- 208.67.222.222;#域名服务器option broadcast - address 10.10.0.255;#广播地址#option time - offset - 18000;#Eastern Standard Time#option ntp - servers 10.10.0.0;#option netbios - name - servers 10.10.0.0;#---Selects point - to - point node(
- default is hybrid).Don 't change this unless
- # -- you understand Netbios very well
- # option netbios-node-type 2;
- default-lease-time 600;
- max-lease-time 7200;
- # we want the nameserver to appear at a fixed address
- # host ns {
- # next-server marvin.redhat.com;
- # hardware ethernet 94:39:e5:34:b2:95;
- # fixed-address 207.175.42.254;
- # }
- }
- '
执行 ifconfig:
- lo: flags = 73 < UP,
- LOOPBACK,
- RUNNING > mtu 16436 inet 127.0.0.1 netmask 255.0.0.0 inet6: :1 prefixlen 128 scopeid 0x10 < host > loop txqueuelen 0(Local Loopback) RX packets 726 bytes 58044(56.6 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 726 bytes 58044(56.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 mon.wlan0: flags = 4163 < UP,
- BROADCAST,
- RUNNING,
- MULTICAST > mtu 1500 unspec 94 - 39 - E5 - 34 - B2 - 95 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 - 00 txqueuelen 1000(UNSPEC) RX packets 115719 bytes 29273395(27.9 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0(0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 p7p1: flags = 4163 < UP,
- BROADCAST,
- RUNNING,
- MULTICAST > mtu 1500 inet6 fe80: :226a: 8aff: fe60: 78af prefixlen 64 scopeid 0x20 < link > ether 20 : 6a: 8a: 60 : 78 : af txqueuelen 1000(Ethernet) RX packets 585598 bytes 464520457(443.0 MiB) RX errors 0 dropped 1 overruns 0 frame 0 TX packets 176682 bytes 16436547(15.6 MiB) TX errors 0 dropped 0 overruns 0 carrier 1 collisions 0 ppp0: flags = 4305 < UP,
- POINTOPOINT,
- RUNNING,
- NOARP,
- MULTICAST > mtu 1492 inet 117.9.210.54 netmask 255.255.255.255 destination 117.9.208.1 ppp txqueuelen 3(Point - to - Point Protocol) RX packets 584705 bytes 449004909(428.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 175927 bytes 12520569(11.9 MiB) TX errors 0 dropped 5 overruns 0 carrier 0 collisions 0 wlan0: flags = 4099 < UP,
- BROADCAST,
- MULTICAST > mtu 1500 inet 10.10.0.1 netmask 255.255.0.0 broadcast 10.10.255.255 inet6 fe80: :9639 : e5ff: fe34: b295 prefixlen 64 scopeid 0x20 < link > ether 94 : 39 : e5: 34 : b2: 95 txqueuelen 1000(Ethernet) RX packets 129595 bytes 8819481(8.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 278844 bytes 410783345(391.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
但我没弄懂。感觉不是 wlan0。。。有空用排除法试试。目前,笔记本的 wifi 功能可正常使用。。。
执行:执行:
- #Generated by iptables - save v1.4.14 on Wed Jan 2 09 : 54 : 48 2013 * nat: PREROUTING ACCEPT[632 : 42667] : INPUT ACCEPT[8 : 953] : OUTPUT ACCEPT[852 : 53269] : POSTROUTING ACCEPT[8 : 480] - A POSTROUTING - s 10.10.0.0 / 16 - o wlan0 - j MASQUERADE - A POSTROUTING - s 10.10.0.0 / 16 - o p7p1 - j MASQUERADE - A POSTROUTING - o eth0 - j MASQUERADE - A POSTROUTING - o ppp0 - j MASQUERADE - A POSTROUTING - s 10.10.0.0 / 24 - o eth0 - j SNAT--to - source 117.14.57.165 - A POSTROUTING - s 10.10.0.0 / 16 - o ppp0 - j MASQUERADE COMMIT#Completed on Wed Jan 2 09 : 54 : 48 2013#Generated by iptables - save v1.4.14 on Wed Jan 2 09 : 54 : 48 2013 * filter: INPUT ACCEPT[592 : 356647] : FORWARD ACCEPT[725 : 232604] : OUTPUT ACCEPT[704 : 73587] COMMIT#Completed on Wed Jan 2 09 : 54 : 48 2013
重启防火墙,以使新的配置立即生效。
补充:对于 fedora18,可以先把 iptables 配置文件放在 / etc/sysconfig/,然后执行 sudo /usr/libexec/iptables/iptables.init start。这条语句会自动调用 / etc/sysconfig/iptables 配置文件。fedora17 应该也可以的。
加入 rc.local 里就可以了。经实验,在系统即将进入桌面时,wifi 热点就已经启动了。
保存设置,这样规则才会被存入 / etc/sysconfig/iptables 中:
/etc/rc.d/init.d/iptables save
二、通过 ssh 达成 linux 系统与 android 设备的互访
登录界面如图:
比如登录我的系统,我填写的是:root@117.8.24.56。
补注:需要注意的一点的是,@后的 IP 地址可以有两种写法:一是 wifi 主机的外网 IP,二是 wifi 主机虚拟 AP 的路由地址。用后者要方便的多,如果你的外网 IP 是动态的话,其优势就显现出来了。下面在介绍 SMB 协议时,也可以这么写 IP,将不再赘述。
1,linux 端需要安装 samba-client samba-common system-config-samba。
yum install samba-client samba-common system-config-samba打开防火墙,在可信的服务里勾选 Samba 和 Samba 客户端。
关闭 selinux。
vim /etc/selinux/config
把 SELINUX=enforcing 改成 SELINUX=disable
启动 andriod4.0.4 自带的文件浏览器里的 无线管理 -> 启动服务 功能。根据提示操作即可。
各软件市场也有相同功能的软件。
我参考到的文章链接:
(需自己翻墙)
需要转载的,请自觉加上原始链接地址。
来源: http://lib.csdn.net/article/linux/43600