当前位置: 首页 > news >正文

中小公司做网站今日新闻最新头条

中小公司做网站,今日新闻最新头条,定制网络机顶盒刷机,建设通官方网站物联网开发系列:物联网开发之旅① WiFi to Ethernet: 树莓派共享无线连接至有线网口,自动通过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本身是不加密的,但是连接上之后需要通过一个账号密码进行验证才能上网。

因此要解决这个问题就要完成两个主要任务:

  1. 将无线连接共享到以太网
  2. 自动通过公司的Captive Portal认证

再次注意本文的需求,是将无线连接共享到有线网口,目前大多数网上的方案都是将以太网共享到WiFi,这没什么难度,开个热点就好了。

具体网络拓扑可以参考以下图片

在这里插入图片描述

实现工具

要将无线连接共享到以太网并自动通过WiFi的登录验证,我们需要选择适当的工具和方法。以下是选择这些工具的原因:

  1. 使用nmcli工具nmcli是NetworkManager的命令行接口,可以方便地管理网络连接。
  2. 使用iptables进行NATiptables是Linux内核的包过滤系统,可以配置NAT(网络地址转换)来共享网络连接。
  3. 编写Shell脚本:通过编写Shell脚本,可以自动化WiFi连接和登录验证。
  4. 使用systemd定时器systemd是现代Linux系统的初始化系统和服务管理器,可以用来定时运行任务。

实现细节

一、将无线连接共享到以太网

1. 配置静态IP地址

首先,需要为以太网接口(eth0)配置一个静态IP地址,以便作为网络共享的网关。

编辑/etc/dhcpcd.conf文件:

sudo nano /etc/dhcpcd.conf

添加以下内容,为eth0配置静态IP地址:

interface eth0
static ip_address=192.168.0.1/24
static routers=
static domain_name_servers=

保存并退出编辑器,然后重启网络服务:

sudo systemctl restart dhcpcd

2. 启用IP转发

编辑/etc/sysctl.conf文件,启用IP转发:

sudo nano /etc/sysctl.conf

取消以下行的注释:

net.ipv4.ip_forward=1

使更改立即生效:

sudo sysctl -p

3. 配置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.nat"

4. 自动应用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 "buttonClicked=4" \-d "redirect_url=" \-d "err_flag=0" \-d "info_flag=0" \-d "info_msg=0" \-v# 检查登录结果
curl -I http://github.com

保存并退出编辑器,然后使脚本可执行:

chmod +x /home/pi/auto_login/login.sh

2. 编写网络检查脚本

创建一个名为network_check.sh的脚本,用于定期检查网络连接状态:

nano /home/pi/auto_login/network_check.sh

添加以下内容:

#!/bin/bashLOGFILE="/var/log/network-reconnect.log"
TARGET="http://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 2>&1elseecho "$(date): Network is up and internet is accessible." >> $LOGFILEfi# 等待 30 秒sleep 30
done

保存并退出编辑器,然后使脚本可执行:

chmod +x /home/pi/auto_login/network_check.sh

3. 使用systemd定时器

创建一个systemd服务文件:

sudo nano /etc/systemd/system/network_check.service

添加以下内容:

[Unit]
Description=Network Check Script[Service]
Type=simple
ExecStart=/home/pi/auto_login/network_check.sh

保存并退出编辑器。

创建一个systemd定时器文件:

sudo nano /etc/systemd/system/network_check.timer

添加以下内容:

[Unit]
Description=Run Network Check Script every 30 seconds[Timer]
OnBootSec=30s
OnUnitActiveSec=30s
Unit=network_check.service[Install]
WantedBy=timers.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

http://www.ritt.cn/news/23995.html

相关文章:

  • 网站开发文档模板 开源全国疫情最新消息
  • 品牌建设+网站互联网登录的网站名
  • 专门做机器人大战的网站叫什么怎么制作网页链接
  • 学习日常之完成网站建设作业北京搜索引擎优化经理
  • 影视网站搭建哪个系统好网络广告的计费方式
  • 苏州营销网站建设本周国内重大新闻十条
  • 做珠宝的网站上海网络推广公司网站
  • 怎么看网站是动态还是静态产品质量推广营销语
  • 深圳建站公司招聘最新新闻头条
  • 做网站全部乱码怎么办seo优化工具
  • 网站源码对应的数据库怎么做海南seo顾问服务
  • 网站开发汇报ppt模板seo客服
  • 360免费wifi不能上网河南做网站优化
  • 有了网站 域名然后么做城市更新论坛破圈
  • 有趣的网站初音站长检测工具
  • 网站设计是怎么做的全网营销推广案例
  • 学院网站建设规划英雄联盟韩国
  • 前端作业做一个网站网推怎么做
  • 做网站 英语徐州百度推广总代理
  • 没有备案的网站seo的定义是什么
  • 大连网站设计开发怎么做个人网页
  • 专业网站优化推广成都网站建设软件
  • 合肥市有做网站的公司吗企业网络营销青岛
  • 广州低价网站建设淘宝店铺怎么引流推广
  • 北京康迪建设监理咨询有限公司网站6自动收录
  • 汕头企业网站公司怎么样做推广最有效
  • 网页设计过程报告重庆seo务
  • 企业微网站制作教程手机上如何制作自己的网站
  • 网站建设要用H5的缺点seo网络推广优势
  • 网站不备案可以做百度推广吗微信加人推码35一单