之前使用的是无线路由让手机上网。学习了iptables后,尝试在非openwrt系统的Linux上实现相同功能。本文简单记录一下。

手上有块X86的板子,上面安装了Linux系统。几个月前研究了WIFI并实现了一个无线AP,最近又重新拾起了iptables,于是顺便让这个AP真正实现上网功能。文章《iptables学习笔记:端口转发之“内网访问外网”》的标题有“端口”二字,是因为其应用场合特殊,除了IP地址要转换外,还要指定端口号,但本文简化了应用场合,只需要进行地址转换即可正常上网。

一、Linux系统网络参数

首先要正确设置Linux系统的IP信息。设置默认网关(仅做示例):

route add default gw 172.18.18.18

并且要设置好服务器DNS。添加(或修改)/etc/resolv.conf文件,内容示例如下:

domain latelee.com.cn
search latelee.com.cn
nameserver 172.18.18.10

当然,如果是使用DHCP的话,上述操作自动完成,无须用户关注。

二、iptables地址转换

在Linux上使能转发,命令如下:

echo "1" > /proc/sys/net/ipv4/ip_forward

地址转换NAT:

iptables -t nat -A POSTROUTING -j MASQUERADE

注意,这里的命令不再指定具体地址,也不指定具体网络设备。

iptables表如下:

# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         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  --  anywhere             anywhere 

三、无线AP

Linux系统可以使用dnsmasq实现DNS和DHCP功能。这样,当有PC或设备连接时则会自动分配IP地址。

dnsmasp配置文件如下(/tmp/ap/dnsmasq.conf):

# Bind to only one interface
bind-interfaces
# Choose interface for binding
interface=wlan0
# Specify range of IP addresses for DHCP leases
dhcp-range=192.168.250.1,192.168.250.200,255.255.255.0,12h
#INTERFACE_NET=wlan0

在上述配置文件中,指定的网口为wlan0,这里WIFI的接口,如果是其它的则根据实际情况修改。执行命令示例如下:

dnsmasq -C /tmp/ap/dnsmasq.conf -x /tmp/ap/dnsmasq.pid -l /tmp/ap/dnsmasq.leases

无线AP使用hostapd提供WIFI热点服务,可以参考笔者文章《Ubuntu14.04系统hostapd编译及使用》。

下面给出hostapd配置文件如下(/tmp/ap/hostapd.conf):

beacon_int=100
interface=wlan0 # 网口
driver=nl80211
ssid=wifitest # WIFI名称
channel=0
max_num_sta=2 # 客户最大连接数
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=1 # 隐藏SSID
wpa=2
wpa_passphrase=12345678910 # 密码
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
country_code=CN
ieee80211d=1
ieee80211h=1
hw_mode=g
ieee80211n=1
ht_capab=[HT40+][SHORT-GI-40][DSSS_CCK-40]
wmm_enabled=1
force_40mhz=1 # powered by Late Lee

执行命令示例:

hostapd -B /tmp/ap/hostapd.conf -f /tmp/ap/hostapd.log 

完成上述步骤后,即可以使用手机连接wifitest这个热点了,由于配置文件中隐藏了SSID,需要在手机“设置”页面中手动输出SSID和密码。

四、其它

连接WIFI热点后,在手机执行cat /etc/resolv.conf 提示没有该文件,执行ifconfig也没信息输出,由于对android不熟悉,就不深究了。

不过在单独测试dnsmasq,在一台设备上连接并用dhclient获取IP,发现/etc/resolv.conf内容如下:

# cat /etc/resolv.conf
nameserver 192.168.250.1

DNS服务器IP已经变成为运行dnsmasq所在的Linux系统了。

李迟 2016.10.12 周三 晚上

iptables学习笔记:使用NAT实现简单的无线AP相关推荐

  1. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  2. FPGA学习笔记(1)简单的时序逻辑电路——流水灯

    FPGA学习笔记(1)简单的时序逻辑电路--流水灯 编程语言为Verilog HDL 原理 (1)设计一个计数器,使开发板上的4个LED状态每500ms翻转一次.开发板上的晶振输出时钟频率为50MHz ...

  3. C++下opencv学习笔记(一)(图像的简单读取丶显示与存储)

    C++下opencv学习笔记(一)(图像的简单读取丶显示与存储) 前言 学习C++ OpenCV,第一需要具备面向对象语言的基础,第二要对图像处理机器学习有基础了解,容易入门.觉得自己基础已经有了可以 ...

  4. JetpackCompose从入门到实战学习笔记2——Modifier的简单使用

    JetpackCompose从入门到实战学习笔记2--Modifier的简单使用 1.Image的使用: @Composable fun Image(modifier: Modifier) {Row ...

  5. 【学习笔记】网络流算法简单入门

    [学习笔记]网络流算法简单入门 [大前言] 网络流是一种神奇的问题,在不同的题中你会发现各种各样的神仙操作. 而且从理论上讲,网络流可以处理所有二分图问题. 二分图和网络流的难度都在于问题建模,一般不 ...

  6. 炼数成金Tensorflow学习笔记之2.4_Tensorflow简单示例

    炼数成金Tensorflow学习笔记之2.4_Tensorflow简单示例 代码及分析 代码及分析 # -*- coding: utf-8 -*- """ Created ...

  7. TI CC1101学习笔记:工作原理简单入门

    众所周知,在IOT的市场应用中,从通信协议细分的话,有SUB-1G,2.4G,3G, 4G,以及最新推出的5G,虽然5G通信协议已经在崭露头角,但是不同的通信协议在不同的应用领域之中还是占据着一定的重 ...

  8. DeepXDE学习笔记【1】——简单ODE方程求解

    DeepXDE学习笔记[1]--简单ODE方程求解 1.背景 物理信息神经网络(PINN)自从2017年被提出,其应用范围在近两年也被挖掘的越来越广泛,除了可以解决物理方面的问题,信号处理.工程评估等 ...

  9. matlab数组平方的计算自定义函数_从零开始的matlab学习笔记——(38)简单数论计算函数:取整,gcd,lcm,质数,全排列...

    matlab应用--求极限,求导,求积分,解方程,概率统计,函数绘图,三维图像,拟合函数,动态图,傅里叶变换,随机数,优化问题....更多内容尽在个人专栏:matlab学习 翻了翻优化工具箱,发现内容 ...

最新文章

  1. linux下top命令参数解释
  2. 维修技嘉B250M-DS3H不开机一例
  3. 2020教资高频考点作文素材汇总
  4. Java开发人员在编程中常见的雷!
  5. C++关键字速查手册
  6. BugkuCTF-Reverse题特殊的Base64
  7. 在Anaconda中安装TensorFlow1.14.0与TensorFlow2.0.0
  8. 大数据应用现状:从发现价值到创造价值
  9. 百度编辑器UEditor修改成支持物理路径
  10. iOS 解决导航栏左右 BarButtonItem偏移位置的问题
  11. 精选|2019年1月R新包推荐
  12. 瓜瓜播放器android,瓜瓜视频播放器
  13. Vi编辑器基本常用命令
  14. 使用 webservice 实现 RPC 调用
  15. 西门子S7-200主机PLC可编程控制器原理及应用
  16. python获取12306火车票_Python脚本实现12306火车票查询系统
  17. 海量数据,3行Python代码直接获取!
  18. 微信小程序的的图片显示不出来
  19. 怎么在电脑上用计算机,如何把旧电脑变成云电脑?戳这里
  20. Educoder_Web_简历表页面的制作

热门文章

  1. python内存注入代码_Python模板注入
  2. 阿里明确中国数字商业板块组织架构 全面聚焦客户体验
  3. 蹭热度?罗永浩:下一个创业项目是“元宇宙公司”
  4. 三星Galaxy S21 FE证件照公布:120Hz高刷直屏+骁龙888处理器
  5. iPhone 13外观四年以来首次改动:真的尽力了
  6. 全球芯片供应不足!苹果iPhone生产可能面临中断风险
  7. 苹果确认部分AirPods Pro存在静电噪音等声音问题 将免费更换
  8. Model Y已成特斯拉今年交付量第二高车型 前8个月交付2.9万辆
  9. 上半年全国游戏市场销售收入近1400亿元 用户规模近6.6亿人
  10. 腾讯游戏安全报告:定制外挂占比过半 游戏黑产资产惊人