如何关闭本月未付款的室友的互联网?


56

我有几个室友,每个月与我分摊上网账单。有时他们忘了付钱给我,我不得不为他们的钱而烦恼。

如果经过三天的缠扰他们仍然没有付款,我在基于unix的路由器中创建了一个防火墙规则,该规则阻止了访问其mac地址的流量。事实证明,这对于让犯罪的室友积蓄现金非常有效。

如何在每个月的3日自动为防火墙规则添加/删除mac地址?我想用一种简单的方法在他们付款后的一个月余下的时间里解除封锁。

我目前正在使用pfsense。虽然有强制性门户模块,但它不支持按用户/每月对访问进行监管。

如何自动阻止/取消阻止室友的互联网访问?


14
您现在正在做的事情听起来似乎是最有效的方法-我无法想象,强制性门户网站解决方案除了完全矫kill过正之外。如果有的话,您可以制作一个简单的shell脚本来自动添加规则。
NReilingh 2014年

8
MAC地址非常非常容易更改,不应用作任何安全措施。Windows需要一个注册表编辑。Linux需要一个命令。使用Linux中的一个命令,他甚至可以复制您的MAC地址。在我看来,更好的解决方案是每月自动执行一次密码更改。根据您的知识而不是他的知识来限制访问。
2014年

3
@Nikolay您说得对,更改MAC地址可能是更高级的话题。但是,我只是想强调一下,供我们后代参考-MAC过滤不可靠。此外,在大多数情况下,MAC过滤不是最佳解决方案。我想替换许多在线教程,这些教程都说MAC过滤是一种很好的安全做法。
Mark Lopez

6
记住,每个人,这都是ROOMMATE的情况。我建议不要允许您的MAC地址,而排除所有其他MAC地址,而不是尝试通过MAC来阻止其地址,而是使用@spuder 。如果您有4台设备,则只允许这些设备。所有其他MAC地址(甚至是欺骗的)都将被排除。还记得这只公寓吗?然后,当您狡猾的室友尝试欺骗MAC addy欺骗时,这是行不通的,您笑了。记住孩子们:有时需要“转变”您的想法……
博格的狮子座

11
令我惊讶的是,还没有人提到“ 颠倒的以太网”方式更多的乐趣,然后正好挡住。
SQB

Answers:


33
  1. 制作一个bash脚本,它添加了限制性iptables规则。
  2. 将此脚本放入每月cron。
  3. 在bash脚本中创建一个条件-如果文件~/do_not_block_friends存在并且其修改时间在一个月周期(stat -c %y filename)之内-请勿运行该脚本。
  4. 一旦他们付钱,你就去做touch ~/do_not_block_friends

脚本将运行并看到已do_not_block_friends被修改,因此它将不会运行iptables命令。

如果他们没有付款-脚本将阻止他们。

他们付款后,您可以运行另一个准备好的脚本来解锁它们。

这是没有太多细节的总体计划,但我认为很难弄清其余部分。

编辑

这是编写此类脚本的更简单方法:

#!/bin/bash

count=`find ~ -maxdepth 1 -type f -name do_not_block_friends -mtime -31 | wc -l`

if [ "$count" -eq 1 ]; then

# Friends have paid. Do nothing;

else

# Friends have not paid. Run iptables command;

fi

我们使用find带有以下选项的命令:

  • maxdepth 1 -不要搜索递归
  • type f -搜索文件
  • name -搜索这个名字
  • mtime -31 -查找少于31天前修改的文件

wc -l将计算命令生成的行数。可能是0朋友还没有付款(什么都没找到),也可能是1朋友没有付款并且我们touch控制了文件。

该脚本不会计算该月的天数,默认为31,因为我们没有建立商业计费系统,所以我认为这很好,但是我相信即使这样,也可以使用bash进行计算。


Cron工作绝对是必经之路!
罗布

14

它可能比您要找的要多,但是您是否考虑过使用针对RADIUS作为后端的802.1x身份验证来设置无线凭据?

可以设置RADIUS来检查所需的任何验证器(可能需要编写脚本并将其存储在数据库中或其他内容),以查看您的空姐是否已付房租。当它们进行身份验证并付款后,RADIUS会对它们进行身份验证。否则,事实并非如此。积极的一面是,您不必依赖于对MAC地址的过滤。这样,如果您有精通技术的宽敞屋,他们将无法轻易绕过您已设置的控件。


现实生活中的最佳解决方案。并很容易适应新的/更多室友或其他人,例如添加您的重要他人,这样就不会阻止他们
PsychoData 2014年

听起来足够简单,比mac过滤更好,比门户更简单
MDT Guy

1

检查您可以使用的银行帐户或其他交易解决方案(PayPal?)是否提供任何自动付款通知的方式,例如:

  • 每次交易的电子邮件通知
  • 每日交易摘要电子邮件
  • 一些不错的API

如果有任何这样的方法可用,剩下的就是编写一些简单的脚本来监视付款情况。您可能只是解析银行发送的电子邮件,要求您的朋友每月付款。您将需要一个配置文件,其中存储每个朋友的帐号或ID,要支付的金额(可能也是全局常量)和MAC地址。

然后,脚本将根据每月付款状态调整防火墙条目。

之后,通知您的朋友可用的付款选项,并且-在配置防火墙时-记住要为您的朋友提供访问付款机制的权限,以便他们在错过3天宽限期时仍然可以付款:)


是的,但是然后他将不得不支付处理费,因为他在大学里
没钱
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.