Linux使用NetworkManager随机生成你的MAC地址

今时今日,无论在家里的沙发上,还是在外面的咖啡厅,只要打开笔记本电脑,连上 Wi-Fi,就能通过网络与外界保持联系。但现在的 Wi-Fi 热点们大都能够通过 每张网卡对应的唯一 MAC 地址 来追踪你的设备。下面就来看一下如何避免被追踪。
现在很多人已经开始注重个人隐私这个问题。个人隐私问题并不仅仅指防止他人能够访问到你电脑上的私有内容(这又是另一个问题了),而更多的是指 可追踪性(legibility),也就是是否能够被轻易地统计和追踪到。大家都应该 对此更加重视 。同时,这方面的底线是,服务提供者在得到了用户的授权后才能对用户进行追踪,例如机场的计时 Wi-Fi 只有在用户授权后才能够使用。
因为固定的 MAC 地址能被轻易地追踪到,所以应该定时进行更换,随机的 MAC 地址是一个好的选择。由于 MAC 地址一般只在局域网内使用,因此随机的 MAC 地址也不大会产生冲突 。

NetworkManager简介

NetworkManager由一个管理系统网络连接、并且将其状态通过D-BUS(是一个提供简单的应用程序 互相通讯的途径的自由软件项目,它是做为freedesktoporg项目的一部分来开发的。)进行报告的后台服务,以及一个允许用户管理网络连接的客户 端程序。
NetworkManager服务:NetworkManager - Linux Networking made Easy
NetworkManager的优点:简化网络连接的工作,让桌面本身和其他应用程序能感知网络。
NetworkManager的后台服务:对于GNOME和Xfce那就是nm-applet工具,而对于KDE用户来说就是KNetworkManager。
早期版本的NetworkManager(早期称为NetworkMangler,即网络磨肉机)使用很不方便,但是现在其已经成为了一个强大的工具,让管理网络不再痛苦。

NetworkManager 新版本的改进和新功能

NetworkManager 新版本支持更多的的网络设备有关。从0.8.1开始增加了用于GSM、UMTS和CDMA卡等移动宽带设备ModemManager的支持。使用 ModemManager也有新的功能,比如信号强度显示和选择2G/3G模式的功能。还可以关掉漫游功能以避免产生额外的连接费用;
NetworkManager 0.8.1后还支持使用蓝牙,不仅支持个人区域网络(PAN)上网,也支持老的蓝牙拨号网络(DUN)协议。所有(或者说最多)支持的设备可以在wiki上找到;
NetworkManager支持IPv6的自动配置和静态IP;NetworkManager 新版本还会带来IPv6的DHCP支持
NetworkManager 新版本增强设备以及协议的支持,NetworkManager 最新版有一个全新的漂亮的客户端界面。
命令行接口:NetworkManager 最新版的最大特征:命令行工具命令,一个NetworkManager的命令行接口。
NetworkManager有自己的CLI工具:nmcli。使用nmcli用户可以查询网络连接的状态,也可以用来管理。优点:原始;语法相对简单;在CLI中使用NetworkManager很容易掌握。

配置 NetworkManager

要将随机的 MAC 地址默认地用于所有的 Wi-Fi 连接,需要创建 /etc/NetworkManager/conf.d/00-macrandomize.conf 这个文件:

[device]
wifi.scan-rand-mac-address=yes
[connection]
wifi.cloned-mac-address=stable
ethernet.cloned-mac-address=stable
connection.stable-id=${CONNECTION}/${BOOT}

然后重启 NetworkManager :

systemctl restart NetworkManager

以上配置文件中,将 cloned-mac-address 的值设置为 stable 就可以在每次 NetworkManager 激活连接的时候都生成相同的 MAC 地址,但连接时使用不同的 MAC 地址。如果要在每次激活连接时也获得随机的 MAC 地址,需要将 cloned-mac-address 的值设置为 random。

设置为 stable 可以从 DHCP 获取相同的 IP 地址,也可以让 Wi-Fi 的 强制主页 (captive portal)根据 MAC 地址记住你的登录状态。如果设置为 random ,在每次连接的时候都需要重新认证(或者点击“我同意”),在使用机场 Wi-Fi 的时候会需要到这种 random 模式。可以在这篇 NetworkManager 的 博客文章 中参阅到有关使用 nmcli 从终端配置特定连接的详细说明。

使用 ip link 命令可以查看当前的 MAC 地址,MAC 地址将会显示在 ether 一词的后面

$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
link/ether 52:54:00:5f:d5:4e brd ff:ff:ff:ff:ff:ff
3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT group default qlen 1000
link/ether 52:54:00:03:23:59 brd ff:ff:ff:ff:ff:ff

什么时候不能随机化 MAC 地址

在某些情况下确实需要能被追踪到。例如在家用网络中,可能需要将路由器配置为对电脑分配一致的 IP 地址以进行端口转发;再例如公司的雇主可能需要根据 MAC 地址来提供 Wi-Fi 服务,这时候就需要进行追踪。要更改特定的 Wi-Fi 连接,请使用 nmcli 查看 NetworkManager 连接并显示当前设置:

$ nmcli c | grep wifi
Amtrak_WiFi 5f4b9f75-9e41-47f8-8bac-25dae779cd87 wifi --
StaplesHotspot de57940c-32c2-468b-8f96-0a3b9a9b0a5e wifi --
MyHome e8c79829-1848-4563-8e44-466e14a3223d wifi wlp1s0
...
$ nmcli c show 5f4b9f75-9e41-47f8-8bac-25dae779cd87 | grep cloned
802-11-wireless.cloned-mac-address: --
$ nmcli c show e8c79829-1848-4563-8e44-466e14a3223d | grep cloned
802-11-wireless.cloned-mac-address: stable

这个例子在 Amtrak 使用完全随机 MAC 地址(使用默认配置)和 MyHome 的永久 MAC 地址(使用 stable 配置)。永久 MAC 地址是在硬件生产的时候分配到网络接口上的,网络管理员能够根据永久 MAC 地址来查看 设备的制造商 ID 。

更改配置并重新连接活动的接口:

$ nmcli c modify 5f4b9f75-9e41-47f8-8bac-25dae779cd87 802-11-wireless.cloned-mac-address random
$ nmcli c modify e8c79829-1848-4563-8e44-466e14a3223d 802-11-wireless.cloned-mac-address permanent
$ nmcli c down e8c79829-1848-4563-8e44-466e14a3223d
$ nmcli c up e8c79829-1848-4563-8e44-466e14a3223d
$ ip link
...

你还可以安装 NetworkManager-tui ,就可以通过可视化界面菜单来编辑连接。

当你走在路上时,你要留意周围的环境,并警惕可能的危险。同样,在使用公共互联网资源时也要注意你自己的可追踪性。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • Linux下python3.6.1环境配置教程

    linux系统环境自带python2.6,但有时我们项目使用的版本可能是3.x以上等等,此时我们需要在linux中再安装项目所需的python版本,此时就涉及多版本共存问题了,很多同学在安装多个版本Python时会遇到各种问题,本篇文章针对python多版本共存做了详细安装说明. 1.下载python安装包 打开https://www.python.org/downloads/,选择downloads>>All releases 这里我选择安装python3.6.1 选择源码安装,下载源码通过

  • 使用iptable和Firewalld工具来管理Linux防火墙连接规则

    防火墙 防火墙是一套规则.当数据包进入或离开受保护的网络空间时,将根据防火墙规则测试数据包的内容(特别是有关其来源.目标和计划使用的协议的信息),以确定是否应该允许数据包通过.下面是一个简单的例子: 防火墙可以根据协议或基于目标的规则过滤请求. 一方面,iptables是管理Linux机器上防火墙规则的工具. 另一方面,firewalld也是管理Linux机器上防火墙规则的工具. 你对此有意见吗?如果我告诉你外面还有另一个工具,叫做nftable? 好吧,我承认整件事闻起来有点怪怪的,所以让我解

  • 2018值得选用的五个Linux服务器发行版

    据最新统计,目前Linux发行版约有300种,几乎都可以作为服务器系统运行.在Linux早期,几乎所有发行版都是"万能"发行版,专门的Linux服务器发行版并不火热,到21世纪初,每个希望将Linux变现的公司,才都开始提供服务器发行版. Linux发行版很少互相复制.从以下5个最流行的Linux服务器发行版来看,这一点很明显,它们各有不同的优缺点. 一.Red Hat Enterprise Linux 先介绍红帽公司的产品,主要是因为该公司今年将成为年收入40亿美元的企业,尽管它不再

  • 吸引发烧友的视听Linux发行版

    我最近偶然发现视听Linux项目,许多专门的面向音乐的Linux发行版之一.视听Linux: 是基于ArchLInux 提供一个为播放音乐而定制的实时linux内核. 使用轻量级流动箱窗口管理器 避免不必要的守护进程和服务 允许播放dsf并支持通常的pcm格式. 支持各种音乐播放器,包括我最喜欢的组合之一:mpd+粤语 自2017年4月以来,这个亲音频的Linux网站并没有显示出太多的活动,但它确实包含了今年的一些更新和评论.考虑到它的定位和功能集,我决定在我的旧东芝笔记本电脑上运行一下. 安装

  • 2016年如何选择Linux发行版

    不管是在企业级应用还是在消费者领域,2015 对于 Linux 来说都是极其重要的一年.作为一个从 2005 年就开始使用 Linux 的老用户,我有幸见证了 Linux 过去这 10 年里的重大发展,并且,我相信它在 2016 年里会更加令人激动.在这篇文章里,我会挑选几个将在 2016 年里大放光彩的最佳发行版给大家介绍一下. 强势归来的发行版:openSUSE SUSE 是 openSUSE 发行版背后的公司,同时也是起步最早的 Linux 公司:它在 Linus Torvalds 发布

  • Linux 发行版和安装的基本知识

    一.Linux发行版的基本知识 虽然Linux的基础是其内核(kernel),但是光有内核还远不是一个完整可用的操作系统环境.这里我们要讲述一些关于Linux发行版的基本要素. Boot manager :boot manager是存在在硬盘主引导记录(aster boot record ,MBR)中的程序,该程序由计算机的BIOS调入执行,完成启动工作.如果你在一个已经安装了Windows或其它系统的机器上安装Linux,boot manager将让你选择启动哪个操作系统.boot manag

  • 不同发行版Linux操作系统如何实现共存

    Linux发行版众多,各自的优缺点也不一样,不少Linux爱好者想同时拥有多个Linux操作系统,下面笔者就提供两种不需要安装额外引导程序的多Linux共存方法. 使用OS Loader引导多个Linux操作系统 使用这种方法必须满足一个前提条件,就是Linux操作系统的引导程序不能装在主引导记录(MBR),而只能装在Linux引导分区的第一个扇区,这样才不会覆盖Windows 2000/XP的OS Loader. 笔者以使用OS Loader引导红旗Linux桌面版4.1为例进行说明.装好红旗

  • 详解Linux服务器状态、性能相关命令

    服务器状态分析 查看Linux服务器CPU详细情况 #查看CPU的信息 [root@host ~]# cat /proc/cpuinfo  #查看物理CPU的个数 [root@host /]# cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l #查看每个物理CPU的核数 [root@host /]# cat /proc/cpuinfo | grep "cpu cores" | uniq #逻辑C

  • Linux系统(CentOS)下python2.7.10安装

    本文记录了Linux系统(CentOS)安装Python,供大家参考,具体内容如下 Python(Linux) 下载地址 操作系统:Centos6.4 1.下载 下载的版本:Python-2.7.10.tgz 2.安装 一般情况下,Linux都会预装 Python了,但版本较低. (1)安装包解压 将Python-2.7.10.tgz放到/usr/local/目录下然后进行解压. 解压命令:tar -xzf Python-2.7.10.tgz (2)进入Python-2.7.10目录然后进行安装

  • Linux定时自动删除旧垃圾文件的Autotrash工具

    Autotrash 是一个命令行程序,它用于自动清除旧的已删除文件.它将清除超过指定天数的在回收站中的文件.你不需要清空回收站或执行 SHIFT+DELETE 以永久清除文件/文件夹.Autortrash 将处理回收站中的内容,并在特定时间段后自动删除它们.简而言之,Autotrash 永远不会让你的垃圾变得太大. 安装 Autotrash Autotrash 默认存在于基于 Debian 系统的仓库中.要在 Debian.Ubuntu.Linux Mint 上安装 autotrash,请运行:

  • 如何在Linux中的特定时间运行命令

    有一天,我使用 rsync 将大文件传输到局域网上的另一个系统.由于它是非常大的文件,大约需要 20 分钟才能完成.我不想再等了,我也不想按 CTRL+C 来终止这个过程.我只是想知道在 Linux 操作系统中是否有简单的方法可以在特定的时间运行一个命令,并且一旦超时就自动杀死它 -- 因此有了这篇文章.请继续阅读. 在 Linux 中在特定时间运行命令 我们可以用两种方法做到这一点. 方法 1 - 使用 timeout 命令 最常用的方法是使用 timeout 命令.对于那些不知道的人来说,t

随机推荐