cep*_*3us 5 networking systemd-networkd
如何通过 .link 文件中的网络守护进程将模式设置为设备(例如监视器/ap 到 wlan)???
因为我想在 wlan 设备的 .network 中设置网桥,并且在我将其设置为特定模式之前我无法做到。
##################################
# /etc/systemd/network/eth0.link #
##################################
[Match]
MACAddress=xxxxxxxxxx
[Link]
Description=Top Ethernet Port
Type=ether
Name=eth0
#MACAddressPolicy=persistent
MACAddress= rewrite mac
WakeOnLan=off
#####################################
# /etc/systemd/network/eth0.network #
#####################################
[Match]
Name=eth0
[Address]
Address=192.168.0.101/24
Broadcast=192.168.0.101
[Network]
Bridge=br0
###################################
# /etc/systemd/network/br0.netdev #
###################################
[NetDev]
Name=br0
Kind=bridge
MACAddress=set mac
####################################
# /etc/systemd/network/br0.network #
####################################
[Match]
Name=br0
[Address]
Address=192.168.0.100/24
Broadcast=192.168.0.100
[Network]
Description=Default network through bridge
Gateway=192.168.0.1
DHCP=ip4
IPv6PrivacyExtensions=true
DNS=8.8.8.8
DNS=8.8.4.4
[DHCP]
UseDNS=false
[Bridge]
[Route]
#Gateway=192.168.0.1
#Destination=192.168.0.0/24
#Scope=link
###################################
# /etc/systemd/network/at0.link #
###################################
[Match]
# See: udevadm info /sys/class/net/at0
Type=wlan
OriginalName=wlan0
#MACAddress=
Driver=ath9k
[Link]
Description=Top Wireless Lan Port
Name=at0
Type=wlan
MACAddress= rewrite mac
BitsPerSecond=100M
WakeOnLan=off
####################################
# /etc/systemd/network/at0.network #
####################################
[Match]
Name=at0
[Address]
Address=192.168.0.102/24
Broadcast=192.168.0.102
[Network]
Bridge=br0 <---- THIS FAILS
Run Code Online (Sandbox Code Playgroud)
#
$ networkctl
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback carrier configured
2 eth0 ether routable configured
3 at0 wlan no-carrier configured
4 br0 ether routable configured
$ networkctl status
? State: routable
Address: 192.168.0.101 on eth0
192.168.0.102 on at0
192.168.0.100 on br0
fe80::cb4:a1ff:fea2:111 on eth0
fe80::cb4:a1ff:fea2:110 on br0
Gateway: 192.168.0.1 (Cisco SPVTG) on br0
DNS: 8.8.4.4
8.8.8.8
Run Code Online (Sandbox Code Playgroud)
附:
我知道如何通过 networkd 创建网桥和接口以及如何向网桥添加接口 - 但我不知道如何在不使用 wpa 请求者或 iw / iw conf 的情况下将特定接口(无线网卡)的模式更改为其他模式
来自:https : //wiki.archlinux.org/index.php/systemd-networkd
无线适配器
为了使用 systemd-networkd 连接到无线网络,需要配置有其他服务(例如 wpa_supplicant)的无线适配器。本例中,对应的需要开启的systemd服务文件为wpa_supplicant@wlp2s0.service。
但是我不想连接!我想临时制作 - ap
所以我想:
附:我只找到了使用 wpa_supplicant 作为单位的方法
# create wpa supplicant config for interface at0
#
$ nano / cat /etc/wpa_supplicant/wpa_supplicant_at0.conf
ctrl_interface=/var/run/wpa_supplicant
eapol_version=1
ap_scan=1
fast_reauth=1
network={
ssid="..."
#psk="..."
}
# create unit
#
$ nano /etc/systemd/system/wpa_supplicant@.service
[Unit]
Description=WPA supplicant (%i)
After=systemd-networkd.service
Requires=systemd-networkd.service
Before=network-online.target
ConditionPathIsSymbolicLink=/sys/class/net/%i
[Service]
Type=forking
ExecStartPre=/sbin/ip link set %i up
ExecStart=/sbin/wpa_supplicant -s -i %i -D nl80211,wext -c/etc/wpa_supplicant/wpa_supplicant_%i.conf -B -P /run/wpa_supplicant.%i.pid
ExecStopPost=/sbin/ip addr flush %i
ExecStopPost=/sbin/ip link set %i down
PIDFile=/run/wpa_supplicant.%i.pid
[Install]
WantedBy=multi-user.target
# reload systemctl daemon
#
$ systemctl daemon-reload
# enable supplicant on interface on boot
#
$ systemctl enable wpa_supplicant@at0
Run Code Online (Sandbox Code Playgroud)
ps2。我挖出了这个:
https://wiki.archlinux.org/index.php/Talk:Ad-hoc_networking
基本:
网络拓扑
802.11 无线网络中有两种流行的网络拓扑。我讨论的第一个拓扑是基础设施 BSS 模式,这是最流行的。您会在家庭无线网络和办公室中遇到基础设施 BSS 无线 > 网络。稍后我将讨论IBSS(Ad Hoc)模式。请注意,IBSS 不是基础设施 BSS;IBSS 是独立的 BSS,它是一个自组织网络,在本节后面讨论。
基础设施BSS
在基础设施 BSS 模式下工作时,有一个称为接入点 (AP) 的中央设备和一些客户端工作站。它们一起形成了一个 BSS(基本服务集)。这些客户站必须首先针对 AP 执行关联和验证,才能通过 AP 传输数据包。在许多情况下,客户端工作站在身份验证和关联之前执行扫描,以获取有关 AP 的详细信息。关联是排他的:在给定的时刻,一个客户端只能与一个 AP 关联。当客户端与 AP 成功关联时,它会获得一个 AID(关联 ID),它是一个唯一编号(对于此 BSS),范围为 1-2007。AP 实际上是一种无线网络设备,具有一些硬件附加功能(如以太网端口、LED、重置为制造商默认值的按钮等)。管理守护进程在 AP 设备上运行。此类软件的一个示例是 hostapd 守护程序。该软件处理 MLME 层的一些管理任务,例如身份验证和关联请求。它通过注册自己以通过 nl80211 接收相关管理帧来实现这一点。hostapd 项目是一个开源项目,它使多个无线网络设备能够作为 AP 运行。客户端可以通过向 AP 发送数据包来与其他客户端(或桥接到 AP 的不同网络中的站点)通信,这些数据包由 AP 中继到其最终目的地。为了覆盖大面积,您可以部署多个AP并通过线连接它们。这种类型的部署称为扩展服务集 (ESS)。在 ESS 部署中,有两个或多个 BSS。在一个 BSS 中发送的组播和广播,可能到达附近的 BSS,但会被附近的 BSS 站拒绝(802.11 报头中的 bssid 不匹配)。在这样的部署中,每个 AP 通常使用不同的信道来最小化干扰。
IBSS 或 Ad Hoc 模式
IBSS 网络通常是在没有预先规划的情况下形成的,只要需要 WLAN。IBSS 网络也称为 ad hoc 网络。创建 IBSS 是一个简单的过程。您可以通过从命令行运行此 iw 命令来设置 IBSS(请注意,2412 参数用于使用通道 1):
iw wlan0 ibss join AdHocNetworkName 2412
Run Code Online (Sandbox Code Playgroud)
或者在使用 iwconfig 工具时,使用以下两个命令:
iwconfig wlan0 mode ad-hoc
iwconfig wlan0 essid AdHocNetworkrName
Run Code Online (Sandbox Code Playgroud)
这通过调用 ieee80211_sta_create_ibss() 方法 (net/mac80211/ibss.c) 来触发 IBSS 创建。然后必须手动(或以其他方式)将 ssid(在这种情况下为 AdHocNetworkName)分发给想要连接到自组织网络的每个人。使用 IBSS 时,您没有 AP。IBSS 的 bssid 是一个随机的 48 位地址(基于调用 get_random_bytes() 方法)。Ad Hoc 模式下的电源管理比基础设施 BSS 中的电源管理复杂一些;它使用通知交通指示图 (ATIM) 消息。mac802.11 不支持 ATIM,本章不讨论。下一节介绍省电模式,这是mac80211网络栈最重要的机制之一...
无线模式
您可以将无线网络接口设置为在多种模式下运行,具体取决于其预期用途和部署网络的拓扑结构。在某些情况下,您可以使用 iwconfig 命令设置模式,而在某些情况下,您必须为此使用 hostapd 之类的工具。请注意,并非所有设备都支持所有模式。有关支持不同模式的 Linux 驱动程序列表,请参阅 www.linuxwireless.org/en/users/Drivers。或者,您还可以检查驱动程序代码中 wiphy 成员(在 ieee80211_hw 对象中)的 interface_modes 字段初始化为哪些值。interface_modes 被初始化为 nl80211_iftype 枚举的一种或多种模式,如 NL80211_IFTYPE_STATION 或 NL80211_IFTYPE_ADHOC(参见:include/uapi/linux/nl80211.h)。以下是对这些无线模式的详细说明:
根据Systemd-networkd,您需要使用以下命令创建一个虚拟桥接接口:
nano /etc/systemd/network/MyBridge.netdev
Run Code Online (Sandbox Code Playgroud)
过去以下内容
[NetDev]
Name=br0
Kind=bridge
Run Code Online (Sandbox Code Playgroud)
然后重新启动systemd-networkd.service
验证类型ip a
下一步为网桥创建网络配置文件
nano /etc/systemd/network/MyBridge.network
Run Code Online (Sandbox Code Playgroud)
并过去以下内容:
[Match]
Name=br0
[Network]
DHCP=ipv4
Run Code Online (Sandbox Code Playgroud)
编辑
要设置接入点,您可以使用create_ap github_create_ap
安装
yaourt -S create_ap
Run Code Online (Sandbox Code Playgroud)
对于其他发行版
git clone https://github.com/oblique/create_ap
cd create_ap
make install
Run Code Online (Sandbox Code Playgroud)
例子
无密码(开放网络):
create_ap wlan0 eth0 MyAccessPoint
Run Code Online (Sandbox Code Playgroud)
WPA + WPA2 密码:
create_ap wlan0 eth0 MyAccessPoint MyPassPhrase
Run Code Online (Sandbox Code Playgroud)
没有互联网共享的AP:
create_ap -n wlan0 MyAccessPoint MyPassPhrase
Run Code Online (Sandbox Code Playgroud)
桥接互联网共享:
create_ap -m bridge wlan0 eth0 MyAccessPoint MyPassPhrase
Run Code Online (Sandbox Code Playgroud)
桥接互联网共享(预先配置的桥接接口):
create_ap -m bridge wlan0 br0 MyAccessPoint MyPassPhrase
Run Code Online (Sandbox Code Playgroud)
从同一 WiFi 接口共享互联网:
create_ap wlan0 wlan0 MyAccessPoint MyPassPhrase
Run Code Online (Sandbox Code Playgroud)
选择不同的 WiFi 适配器驱动程序
create_ap --driver rtl871xdrv wlan0 eth0 MyAccessPoint MyPassPhrase
Run Code Online (Sandbox Code Playgroud)
使用管道无密码(开放网络):
echo -e "MyAccessPoint" | create_ap wlan0 eth0
Run Code Online (Sandbox Code Playgroud)
使用管道的 WPA + WPA2 密码:
echo -e "MyAccessPoint\nMyPassPhrase" | create_ap wlan0 eth0
Run Code Online (Sandbox Code Playgroud)
启用 IEEE 802.11n
create_ap --ieee80211n --ht_capab '[HT40+]' wlan0 eth0 MyAccessPoint MyPassPhrase
Run Code Online (Sandbox Code Playgroud)
客户端隔离:
create_ap --isolate-clients wlan0 eth0 MyAccessPoint MyPassPhrase
Run Code Online (Sandbox Code Playgroud)
系统服务
使用持久性 systemd 服务
立即开始服务:
systemctl start create_ap
Run Code Online (Sandbox Code Playgroud)
开机启动:
systemctl enable create_ap
Run Code Online (Sandbox Code Playgroud)