Arch Stanton Asked: 2024-08-11 20:21:10 +0800 CST2024-08-11 20:21:10 +0800 CST 2024-08-11 20:21:10 +0800 CST 限制用户可以连接的网络 772 我正在为计算机实验室的 PC 设置访客用户帐户,这些 PC 运行的是 Ubuntu 24.04。我希望访客帐户只能连接到我们的 Wi-Fi 网络,禁止访问附近的其他网络、手机热点等。我该怎么做? ubuntu 1 个回答 Voted Best Answer metablaster 2024-08-16T15:33:11+08:002024-08-16T15:33:11+08:00 UID您可以这样做,首先使用命令找出任务用户名id,假设他们的用户名是“guest”,您可以运行: id -u guest 例如输出1100 接下来找出WIFI接口,例如调用wlan0 运行ip命令来显示接口并找出wifi卡名称。 然后在nftables脚本中定义保存这些值的变量: #!/usr/sbin/nft -f define guest_user = 1100 define wlan_nic = "wlan0" 接下来创建一个与该用户匹配的规则,并将其限制到 wifi 接口。 假设filter并且ip table输出ip chain在某处声明 #!/usr/sbin/nft -f add rule filter output meta skuid $guest_user meta oifname $wlan_nic accept 请记住,使用meta skuid仅对输出规则有效,输入流量来自另一台主机并且不携带此信息。 如果您需要基于该模式进行特定过滤,您可以使用jumpverdict 跳转到特定于客户的链,例如: #!/usr/sbin/nft -f add chain filter guest_out_chain { comment "chain for guest" } add rule filter output meta skuid $guest_user meta oifname $wlan_nic jump guest_out_chain 然后在该guest_out_chain链中对客人进行特定的过滤,而不必meta skuid $guest_user meta oifname $wlan_nic每次都指定。 guests如果有多个客人,您还可以以相同的方式创建适用于某个组的规则,但meta skuid您不需要使用meta skgid GID组GIDID,
UID
您可以这样做,首先使用命令找出任务用户名id
,假设他们的用户名是“guest”,您可以运行:例如输出
1100
接下来找出WIFI接口,例如调用
wlan0
运行
ip
命令来显示接口并找出wifi卡名称。然后在
nftables
脚本中定义保存这些值的变量:接下来创建一个与该用户匹配的规则,并将其限制到 wifi 接口。
假设
filter
并且ip table
输出ip chain
在某处声明请记住,使用
meta skuid
仅对输出规则有效,输入流量来自另一台主机并且不携带此信息。如果您需要基于该模式进行特定过滤,您可以使用
jump
verdict 跳转到特定于客户的链,例如:然后在该
guest_out_chain
链中对客人进行特定的过滤,而不必meta skuid $guest_user meta oifname $wlan_nic
每次都指定。guests
如果有多个客人,您还可以以相同的方式创建适用于某个组的规则,但meta skuid
您不需要使用meta skgid GID
组GID
ID,