.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 서비스 파일은 다음과 같습니다. [이메일 보호됨].
하지만 연결하고 싶지 않아요! ad hoc-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이며 이 섹션의 뒷부분에서 설명됩니다.
인프라 BSS
인프라 BSS 모드에서 작동하는 경우 액세스 포인트(AP)라고 하는 중앙 장치와 여러 클라이언트 스테이션이 있습니다. 이들은 함께 BSS(기본 서비스 세트)를 구성합니다. 이러한 클라이언트 스테이션은 AP를 통해 패킷을 전송하기 전에 먼저 AP에 연결하고 인증해야 합니다. 대부분의 경우 클라이언트 스테이션은 인증 및 연결 전에 스캔을 수행하여 AP에 대한 자세한 정보를 얻습니다. 연결은 배타적입니다. 클라이언트는 주어진 순간에 하나의 AP에만 연결될 수 있습니다. 클라이언트가 AP와 성공적으로 연결되면 해당 BSS에 대해 1~2007 범위의 고유 번호인 AID(Association ID)를 얻습니다. AP는 실제로 일부 하드웨어 추가 기능(예: 이더넷 포트, LED, 제조업체 기본값으로 재설정하는 버튼 등)이 포함된 무선 네트워크 장치입니다. 관리 데몬은 AP 장치에서 실행됩니다. 이러한 소프트웨어의 예로는 hostapd 데몬이 있습니다. 이 소프트웨어는 인증 및 연결 요청과 같은 MLME 계층에 대한 일부 관리 작업을 처리합니다. 이는 nl80211을 통해 관련 관리 프레임을 수신하도록 등록함으로써 수행됩니다. Hostapd 프로젝트는 여러 무선 네트워크 장치가 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(Announcement Traffic Indication Map) 메시지를 사용합니다. ATIM은 mac802.11에서 지원되지 않으므로 이 장에서는 논의하지 않습니다. 다음 섹션에서는 mac80211 네트워크 스택의 가장 중요한 메커니즘 중 하나인 절전 모드를 소개합니다.
무선 모드
용도와 배포된 네트워크 토폴로지에 따라 여러 모드에서 작동하도록 무선 네트워크 인터페이스를 설정할 수 있습니다. iwconfig 명령을 사용하여 모드를 설정할 수 있는 경우도 있고, 모드를 설정하려면 Hostapd와 같은 도구를 사용해야 하는 경우도 있습니다. 모든 장치에서 모든 모드가 지원되는 것은 아닙니다. 다양한 모드를 지원하는 Linux 드라이버 목록은 www.linuxwireless.org/en/users/Drivers를 참조하세요. 또는 드라이버 코드에서 wiphy 멤버(ieee80211_hw 개체에 있음)의 interface_modes 필드가 어떤 값으로 초기화되었는지 확인할 수 있습니다. Interface_modes는 NL80211_IFTYPE_STATION 또는 NL80211_IFTYPE_ADHOC와 같은 nl80211_iftype 열거형의 하나 이상의 모드로 초기화됩니다(include/uapi/linux/nl80211.h 참조). 다음은 이러한 무선 모드에 대한 자세한 설명입니다.
- AP 모드: 이 모드에서는 장치가 AP(NL80211_IFTYPE_AP) 역할을 합니다. AP는 연결된 스테이션 목록을 유지하고 관리합니다. 네트워크(BSS) 이름은 AP의 MAC 주소(bssid)입니다. 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
~에 따르면시스템 네트워크가상 브리지 인터페이스를 생성해야 합니다.
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
시스템 서비스
지속적인 시스템 서비스 사용
지금 서비스를 시작하세요:
systemctl start create_ap
신병:
systemctl enable create_ap