使用 iptables,如何仅当我在家庭网络中时才打开端口?

使用 iptables,如何仅当我在家庭网络中时才打开端口?

我想托管一项在笔记本电脑和手机之间同步内容的服务。由于我没有服务器,因此我决定在我的笔记本电脑上托管这些服务。为了让我的手机能够连接到该服务,我需要在防火墙 iptables 中打开相应的端口。但是,当我在公共网络上时,我不想将该服务暴露给潜在的恶意流量。我想打开该端口,但仅限在我的家庭网络上时。使用 iptables 可以做到吗?

在我的家庭网络中,我一回家我的手机就会自动连接到 wifi。我在家时,我的笔记本电脑始终通过 WiFi 连接,只有当我将其插入扩展坞时,才通过以太网连接。两台设备都通过 dhcp 从路由器获取 IP 地址,但默认情况下路由器每次都会为它们提供相同的 IP。

PS:NixOS 特定的答案值得赞赏,但我想我可以自己找出差异。

答案1

我建议 ping 您的路由器,检查 arp 地址。

很可能在启动时会建立与互联网的连接,因此在启动时每小时使用类似的东西

ping -c 4 myrouterip > /dev/null 2>&1
arp | awk '$1 == "myroutermac" { print $1}' | sha512sum > /tmp/sum.txt
if cmp -s /tmp/sum.txt ref.txt
then
   ## at home 
fi

在哪里

  • 我的路由是您的路由器的符号名称 (*)

  • 我的路由器Macarp是从您的家庭路由器返回的 MAC 地址

  • ref.txt是一个包含 sha512sum (或任何 sul tou'll 认为合适)的arp| awk ..文件

    (*) 假设您没有使用与路由器相同的名称前往某个地方路由器使用相同的mac地址

我希望你知道

  • 您的家庭路由器的名称及其在 arp 上的显示方式
  • 如何在启动时启动脚本(如果没有检查 U&L )

相关内容