wordpress文章固定链接,西安网站优化效果,违禁网站用什么浏览器,网站视频提取物联网开发系列#xff1a;物联网开发之旅① WiFi to Ethernet: 树莓派共享无线连接至有线网口#xff0c;自动通过Captive Poartal验证物联网开发番外篇之 Captive Portal验证原理 文章目录 背景实现工具实现细节一、将无线连接共享到以太网1. 配置静态IP地址2. 启用IP转发3… 物联网开发系列物联网开发之旅① WiFi to Ethernet: 树莓派共享无线连接至有线网口自动通过Captive Poartal验证物联网开发番外篇之 Captive Portal验证原理 文章目录 背景实现工具实现细节一、将无线连接共享到以太网1. 配置静态IP地址2. 启用IP转发3. 配置NAT网络地址转换4. 自动应用iptables规则 二、自动通过WiFi的登录验证1. 编写登录脚本2. 编写网络检查脚本3. 使用systemd定时器  总结参考 背景 
在物联网开发中大多数设备都是通过无线局域网进行通信的在局域网下非常容易实现但是有些时候我们需要在远程对物联网设备进行管理例如在公司关掉在家忘了关掉的空调或者在家查看公司物联网设备的工作状态这时候就需要将局域网的设备暴露到互联网上。 
最简单的方式当然是通过一根网线将局域网路由器连接到有互联网的路由器但是有些情况下这种方法并不可行否则就不会有本文了。 
不便之处在于公司只能够提供一个WiFi连接这就需要将无线连接获取到的互联网连接共享到局域网设备中。 
另外公司提供的无线连接通常具有captive portal功能WiFi本身是不加密的但是连接上之后需要通过一个账号密码进行验证才能上网。 
因此要解决这个问题就要完成两个主要任务 
将无线连接共享到以太网自动通过公司的Captive Portal认证 
再次注意本文的需求是将无线连接共享到有线网口目前大多数网上的方案都是将以太网共享到WiFi这没什么难度开个热点就好了。 
具体网络拓扑可以参考以下图片 实现工具 
要将无线连接共享到以太网并自动通过WiFi的登录验证我们需要选择适当的工具和方法。以下是选择这些工具的原因 
使用nmcli工具nmcli是NetworkManager的命令行接口可以方便地管理网络连接。使用iptables进行NATiptables是Linux内核的包过滤系统可以配置NAT网络地址转换来共享网络连接。编写Shell脚本通过编写Shell脚本可以自动化WiFi连接和登录验证。使用systemd定时器systemd是现代Linux系统的初始化系统和服务管理器可以用来定时运行任务。 
实现细节 
一、将无线连接共享到以太网 
1. 配置静态IP地址 
首先需要为以太网接口eth0配置一个静态IP地址以便作为网络共享的网关。 
编辑/etc/dhcpcd.conf文件 
sudo nano /etc/dhcpcd.conf添加以下内容为eth0配置静态IP地址 
interface eth0
static ip_address192.168.0.1/24
static routers
static domain_name_servers保存并退出编辑器然后重启网络服务 
sudo systemctl restart dhcpcd2. 启用IP转发 
编辑/etc/sysctl.conf文件启用IP转发 
sudo nano /etc/sysctl.conf取消以下行的注释 
net.ipv4.ip_forward1使更改立即生效 
sudo sysctl -p3. 配置NAT网络地址转换 
配置iptables以共享无线连接到以太网 
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT将iptables规则保存到文件中 
sudo sh -c iptables-save  /etc/iptables.ipv4.nat4. 自动应用iptables规则 
编辑/etc/rc.local文件在exit 0之前添加以下内容以便在启动时自动应用iptables规则 
sudo nano /etc/rc.local添加以下内容 
iptables-restore  /etc/iptables.ipv4.nat保存并退出编辑器。 
小插曲当我设置好转发之后发现网络十分不稳定研究之后发现是树莓派的射频功率不够导致无线连接不稳定。改进方法有两个一是给树莓派连接外置天线可以参考这个视频有点硬核。我图省事就选了另一种方法买个USB无线网卡建议买免驱动的省事。 
二、自动通过WiFi的登录验证 
关于WiFi的Captive Portal认证功能可以点击这里了解更多。 
要让树莓派自动通过Captive Portal的登录认证主要思想是抓取一个登录界面的数据包进行分析将点击登陆时提交的账号密码的过程替换成脚本自动提交。 
编写一个自动登录脚本包含自动连接WiFi自动提交登录账号密码检查登录结果。 
在系统上电初始化完成后运行登录脚本完成登录同时运行一个30s的定时任务检查互联网连接是否正常如不正常则运行一次登录脚本。 
1. 编写登录脚本 
创建一个名为login.sh的脚本用于连接到WiFi并通过登录验证 
nano /home/pi/auto_login/login.sh添加以下内容 
#!/bin/bash# 连接到WiFi网络
sudo nmcli device wifi connect Your SSID# 等待连接建立
sleep 5# 检查WiFi连接状态
nmcli device status# 检查IP地址
ip addr show wlan0# 提交登录表单并输出详细信息
curl -X POST https://[your login domain] \-d username[your account] \-d password[your password] \-d buttonClicked4 \-d redirect_url \-d err_flag0 \-d info_flag0 \-d info_msg0 \-v# 检查登录结果
curl -I http://github.com保存并退出编辑器然后使脚本可执行 
chmod x /home/pi/auto_login/login.sh2. 编写网络检查脚本 
创建一个名为network_check.sh的脚本用于定期检查网络连接状态 
nano /home/pi/auto_login/network_check.sh添加以下内容 
#!/bin/bashLOGFILE/var/log/network-reconnect.log
TARGEThttp://github.com # 注意选择合适的网站我选择http://www.baidu.com的时候就会获取到不能用的IP导致系统误以为网络没连接上while true; doecho $(date): Checking network connectivity...  $LOGFILE# 检查网络连接状态if ! ping -c 1 -W 1 github.com  /dev/null; thenecho $(date): Network is down or unable to access internet, running login script...  $LOGFILE/home/pi/auto_login/login.sh  $LOGFILE 21elseecho $(date): Network is up and internet is accessible.  $LOGFILEfi# 等待 30 秒sleep 30
done保存并退出编辑器然后使脚本可执行 
chmod x /home/pi/auto_login/network_check.sh3. 使用systemd定时器 
创建一个systemd服务文件 
sudo nano /etc/systemd/system/network_check.service添加以下内容 
[Unit]
DescriptionNetwork Check Script[Service]
Typesimple
ExecStart/home/pi/auto_login/network_check.sh保存并退出编辑器。 
创建一个systemd定时器文件 
sudo nano /etc/systemd/system/network_check.timer添加以下内容 
[Unit]
DescriptionRun Network Check Script every 30 seconds[Timer]
OnBootSec30s
OnUnitActiveSec30s
Unitnetwork_check.service[Install]
WantedBytimers.target保存并退出编辑器。 
重新加载systemd配置并启用和启动定时器 
sudo systemctl daemon-reload
sudo systemctl enable network_check.timer
sudo systemctl start network_check.timer总结 
本文分享了使用树莓派将WiFi连接的互联网共享至以太网并且通过脚本实现登录界面的自动认证。 
希望这篇博客能帮助到你。如果你有任何问题或需要进一步帮助请在评论区留言。 
参考 https://blog.csdn.net/weixin_45501411/article/details/103772070