如何通过 .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
#
$ 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
附注
我知道如何通过网络创建桥接和接口以及如何向桥接添加接口 - 但我不知道如何将特定接口(无线网卡)的模式更改为其他模式而不使用 wpa 请求者或 iw / iw conf
从 :https://wiki.archlinux.org/index.php/systemd-networkd
无线适配器
为了使用 systemd-networkd 连接到无线网络,需要配置有其他服务(例如 wpa_supplicant)的无线适配器。本例中对应需要启用的systemd服务文件为 [电子邮件受保护]。
但我不想连接!我想制作临时 - ap
所以我想:
- 例如将模式设置为 ap/monitor(混杂模式)
- 设置wpa essid
- 设置 wpa 密钥
说真的,如果没有以下条件,就没有办法设置接入点:
- WPA请求者
- 主机
附注我只找到了使用 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/[email protected]
[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
PS2。我挖出了这个:
https://wiki.archlinux.org/index.php/Talk:Ad-hoc_networking
基本:
网络拓扑
802.11 无线网络中有两种流行的网络拓扑。我讨论的第一个拓扑是基础设施 BSS 模式,这是最流行的。您会在家庭无线网络和办公室中遇到基础设施 BSS 无线网络。稍后我会讨论IBSS(Ad Hoc)模式。请注意,IBSS 不是基础设施 BSS; IBSS 是独立 BSS,它是一个 ad hoc 网络,将在本节后面讨论。
基础设施BSS
当工作在基础设施 BSS 模式时,有一个称为接入点 (AP) 的中央设备和一些客户端站。它们共同构成了BSS(基本服务集)。这些客户站必须首先针对 AP 执行关联和验证,才能通过 AP 传输数据包。在许多情况下,客户端站会在身份验证和关联之前执行扫描,以便获取有关 AP 的详细信息。关联是排他性的:客户端在给定时刻只能与一个 AP 关联。当客户端与 AP 成功关联时,它会获得一个 AID(关联 ID),这是一个范围为 1-2007 的唯一编号(对于该 BSS)。 AP 实际上是一种带有一些硬件附加功能的无线网络设备(例如以太网端口、LED、重置为制造商默认值的按钮等)。 AP 设备上运行管理守护程序。此类软件的一个示例是 hostapd 守护程序。该软件处理 MLME 层的一些管理任务,例如身份验证和关联请求。它通过注册自身以通过 nl80211 接收相关管理帧来实现这一点。 hostapd 项目是一个开源项目,它使多个无线网络设备能够作为 AP 运行。客户端可以通过向 AP 发送数据包来与其他客户端(或桥接到 AP 的不同网络中的站)进行通信,数据包由 AP 中继到最终目的地。如果需要覆盖较大的区域,可以部署多个AP并通过有线方式连接。这种类型的部署称为扩展服务集 (ESS)。在ESS部署中,有两个或多个BSS。在一个 BSS 中发送的组播和广播可能会到达附近的 BSS,但会被附近的 BSS 站点拒绝(802.11 标头中的 bssid 不匹配)。在此类部署中,每个接入点通常使用不同的信道来最大程度地减少干扰。
IBSS,或 Ad Hoc 模式
IBSS 网络通常无需预先规划即可形成,仅在需要 WLAN 时使用。 IBSS 网络也称为 ad hoc 网络。创建 IBSS 的过程很简单。您可以通过从命令行运行此 iw 命令来设置 IBSS(请注意,2412 参数用于使用通道 1):
iw wlan0 ibss join AdHocNetworkName 2412
或者使用 iwconfig 工具时,使用以下两个命令:
iwconfig wlan0 mode ad-hoc
iwconfig wlan0 essid AdHocNetworkrName
这通过调用 ieee80211_sta_create_ibss() 方法 (net/mac80211/ibss.c) 触发 IBSS 创建。然后,必须手动(或以其他方式)将 ssid(在本例中为 AdHocNetworkName)分发给想要连接到 ad hoc 网络的每个人。使用 IBSS 时,您没有 AP。 IBSS的bssid是一个随机的48位地址(基于调用get_random_bytes()方法)。 Ad Hoc 模式下的电源管理比基础设施 BSS 中的电源管理稍微复杂一些;它使用公告流量指示图 (ATIM) 消息。 ATIM 不受 mac802.11 支持,本章不予讨论。下一节介绍省电模式,这是 mac80211 网络堆栈最重要的机制之一......
无线模式
您可以将无线网络接口设置为在多种模式下运行,具体取决于其预期用途及其部署的网络拓扑。在某些情况下,您可以使用 iwconfig 命令设置模式,而在某些情况下,您必须使用像 hostapd 这样的工具来设置模式。请注意,并非所有设备都支持所有模式。请参阅 www.linuxwireless.org/en/users/Drivers 以获取支持不同模式的 Linux 驱动程序列表。或者,您还可以检查 wiphy 成员(在 ieee80211_hw 对象中)的 interface_modes 字段在驱动程序代码中初始化为哪些值。 Interface_modes 初始化为 nl80211_iftype 枚举的一种或多种模式,例如 NL80211_IFTYPE_STATION 或 NL80211_IFTYPE_ADHOC(请参阅:include/uapi/linux/nl80211.h)。以下是这些无线模式的详细说明:
- AP 模式:在此模式下,设备充当 AP (NL80211_IFTYPE_AP)。 AP 维护并管理关联站的列表。网络 (BSS) 名称是 AP (bssid) 的 MAC 地址。 BSS 还有一个人类可读的名称,称为 SSID。
- 站基础设施模式:基础设施模式下的受管站 (NL80211_IFTYPE_STATION)。
- 监控模式:在监控模式 (NL80211_IFTYPE_MONITOR) 下,所有传入数据包均未经过滤地处理。这对于嗅探很有用。通常可以在监视模式下传输数据包。这称为数据包注入;这些数据包标有特殊标志(IEEE80211_TX_CTL_INJECTED)。
- Ad Hoc (IBSS) 模式:ad hoc (IBSS) 网络 (NL80211_IFTYPE_ADHOC) 中的站点。使用 Ad Hoc 模式时,网络中没有 AP 设备。
- 无线分布式系统 (WDS) 模式:WDS 网络中的站 (NL80211_IFTYPE_WDS)。
- 网状模式:网状网络 (NL80211_IFTYPE_MESH_POINT) 中的站点,将在本章后面的“网状网络 (802.11s)”部分中讨论。
答案1
根据Systemd-networkd您需要创建一个虚拟桥接口;
nano /etc/systemd/network/MyBridge.netdev
过去以下内容
[NetDev]
Name=br0
Kind=bridge
然后重新启动systemd-networkd.service
验证类型ip a
下一步为网桥创建网络配置文件
nano /etc/systemd/network/MyBridge.network
并过去以下内容:
[Match]
Name=br0
[Network]
DHCP=ipv4
编辑
要设置接入点,您可以使用create_ap
github_create_ap
安装
yaourt -S create_ap
对于其他发行版
git clone https://github.com/oblique/create_ap
cd create_ap
make install
例子
无密码(开放网络):
create_ap wlan0 eth0 MyAccessPoint
WPA + WPA2 密码:
create_ap wlan0 eth0 MyAccessPoint MyPassPhrase
没有互联网共享的AP:
create_ap -n wlan0 MyAccessPoint MyPassPhrase
桥接互联网共享:
create_ap -m bridge wlan0 eth0 MyAccessPoint MyPassPhrase
桥接互联网共享(预先配置的桥接接口):
create_ap -m bridge wlan0 br0 MyAccessPoint MyPassPhrase
从同一 WiFi 接口共享互联网:
create_ap wlan0 wlan0 MyAccessPoint MyPassPhrase
选择不同的 WiFi 适配器驱动程序
create_ap --driver rtl871xdrv wlan0 eth0 MyAccessPoint MyPassPhrase
使用管道无密码(开放网络):
echo -e "MyAccessPoint" | create_ap wlan0 eth0
使用管道的 WPA + WPA2 密码:
echo -e "MyAccessPoint\nMyPassPhrase" | create_ap wlan0 eth0
启用 IEEE 802.11n
create_ap --ieee80211n --ht_capab '[HT40+]' wlan0 eth0 MyAccessPoint MyPassPhrase
客户端隔离:
create_ap --isolate-clients wlan0 eth0 MyAccessPoint MyPassPhrase
系统服务
使用持久性 systemd 服务
立即开始服务:
systemctl start create_ap
开机启动:
systemctl enable create_ap