여러 위치에 대한 무선 인터페이스 구성

여러 위치에 대한 무선 인터페이스 구성

/etc/network/interfaces다양한 액세스 포인트를 감지하고 그에 따라 연결하도록 구성하고 싶습니다 . 이 파일의 현재 상태는 다음과 같습니다.

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

auto ra0
iface ra0 inet dhcp
 wpa-ssid MyNet
 wpa-psk 00d8f778e1e86be0961aa767564d7364ee44fcbd704e4e31ee6c4af0f855c32f

이는 이더넷 연결을 성공적으로 감지하고 사용 가능한 경우 MyNet에 연결합니다. 여러 액세스 포인트를 감지할 수 있도록 어떻게 구성합니까?

여기답변인 것 같지만 지침을 이해할 수 없었습니다.

여러 GUI(nm, wicd 등)를 시도했지만 그 중 어느 것도 내 노트북에서 작동하지 않는 것 같습니다. 어쨌든, 나는 명령줄을 통해 수행하는 것을 선호합니다.

답변1

여러 Wi-Fi 구성/SSID를 해결하려면 해당 수준에서 작업하는 것이 좋습니다 wpa_supplicant.

인터페이스를 다음과 같이 그대로 두십시오.

auto ra0
iface ra0 inet dhcp

다음을 사용하여 wpa_supplicant를 설치하십시오.

apt get install wpasupplicant

wpa_supplicant.confSSID에 따라 사용할 구성이 결정되는 여러 위치를 정의할 수 있습니다 . 다음과 같이:

network={
    ssid="ssid2"
    psk="ssid2 PASSWORD"
}

network={
    ssid="ssid1"
    psk="ssid1 PASSWORD"
}

새 SSID에 대한 구성을 추가할 때마다 서비스를 다시 시작하십시오.

AP에 연결할 때 SSID 이름에 따라 wpa_supplicant해당 구성을 자동으로 선택합니다.

답변2

여러 위치에서 작동하도록 구성하려면 /etc/network/interfaces논리적 인터페이스와 물리적 인터페이스의 차이점을 이해해야 합니다. 물리적 인터페이스는 시스템에 설치한 하드웨어 장치에 해당하며 특정 명명 체계(wlan0, wlan1, eth0, ra0 등)로 식별됩니다.

에서는 /etc/network/interfaces각 물리적 인터페이스에 대해 하나의 구성만 지정할 수 있으므로 여기서 논리적 인터페이스가 작동합니다. 하나의 물리적 인터페이스에 대해 여러 개의 논리적 인터페이스를 가질 수 있습니다. 이것을 매핑이라고 합니다. 논리적 인터페이스를 물리적 인터페이스에 매핑하려면 다음을 추가합니다./etc/network/interfaces

mapping ra0 # map physical interface ra0...
    map home work # ...to 'home' and 'work' logical interfaces

그런 다음 각 인터페이스에 대한 구성을 작성합니다.

iface home inet dhcp # configuration stanza for 'home' logical interface
 wpa-ssid Home
 wpa-psk 00d8f778e1e86be0961aa767564d7364ee44fcbd704e4e31ee6c4af0f855c32f

iface work inet dhcp # configuration stanza for 'work' logical interface
 wpa-ssid Work
 wpa-psk 00d8f778e1e86be0961aa767564d7364ee44fcbd704e4e31ee6c4af0f855c32f

물론 시스템이 어떤 인터페이스를 사용해야 할지 모르기 때문에 이는 작동하지 않을 것입니다. 따라서 guessnet시스템이 구성을 선택하도록 돕는 데 사용할 것입니다.

sudo apt-get install guessnet

그런 다음 guessnet매핑 스탠자에서 다음을 사용합니다.

mapping ra0
        script /usr/sbin/guessnet-ifupdown # <-- We added this
        map home work

Guessnet일부 기준(IP, ESSID, MAC 주소)에 따라 네트워크를 테스트하고 해당 테스트에 실패하지 않는 구성을 선택하는 방식으로 작동합니다. 다음 예에서는 사용 가능한 ESSID 'Work'가 있는 네트워크가 있는 경우 ra0앞서 정의한 인터페이스가 해당 네트워크에 연결되어 이 구성을 적용합니다.

iface work inet dhcp 
 test wireless essid Work # We test if the ESSID of the network is 'Work'
 wpa-ssid Work
 wpa-psk 00d8f778e1e86be0961aa767564d7364ee44fcbd704e4e31ee6c4af0f855c32f

답변3

우리의 경우에는 특정 장치에 다른 무선랜을 전용으로 사용하고 싶었습니다. 이를 위해 우리는 systemd 템플릿을 만들었습니다.

# cat /usr/lib/systemd/system/wpa_supplicant\@.service 
[Unit]
Description=WPA supplicant for %i
Before=network.target
After=dbus.service
Wants=network.target
IgnoreOnIsolate=true

[Service]
ExecStart=/sbin/wpa_supplicant -s -O /run/wpa_supplicant-%i -c/etc/wpa_supplicant/wpa_supplicant-%i.conf -i%i

[Install]
WantedBy=multi-user.target

그런 다음 다음과 같이 구성을 만들었습니다.

==> /etc/wpa_supplicant/wpa_supplicant-wlan0.conf <==
network={
    ssid="net0"
    psk="secretpass0"
}

==> /etc/wpa_supplicant/wpa_supplicant-wlan1.conf <==
network={
    ssid="net1"
    psk="secretpass1"
}

다음과 같이 시작했습니다.

systemctl enable --now wpa_supplicant@wlan0
systemctl enable --now wpa_supplicant@wlan1

경고:

이상하게도 내 서비스를 무시하고 다음에서 실행한 것 같습니다 dhcpcd.

# ps ax|grep wpa

    653 ?        Ss     0:00 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant-wlan1.conf -iwlan1
    668 ?        Ss     0:00 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant-wlan0.conf -iwlan0

# systemctl status 668
● dhcpcd.service - DHCP Client Daemon
     Loaded: loaded (/lib/systemd/system/dhcpcd.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/dhcpcd.service.d
             └─wait.conf
     Active: active (running) since Sat 2023-07-08 21:16:25 BST; 1min 23s ago
       Docs: man:dhcpcd(8)
    Process: 545 ExecStart=/usr/sbin/dhcpcd -w -q (code=exited, status=0/SUCCESS)
      Tasks: 3 (limit: 1993)
     Memory: 4.3M
        CPU: 775ms
     CGroup: /system.slice/dhcpcd.service
             ├─653 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant-wlan1.conf -iwlan1
             ├─668 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant-wlan0.conf -iwlan0
             └─701 /usr/sbin/dhcpcd -w -q

어쩌면 데비안 네트워크 스택이나 파일을 직접 dhclient지원 wpa_supplicant-<device>.conf하고 자동으로 수행할 수도 있습니다(내 /etc/network/interfaces* 파일은 비어 있음을 참고하세요). 그렇다면 필요한 것은 장치마다 다른 구성만 있으면 됩니다. 하지만 어쨌든 이것은 우리에게 효과적입니다. 왜 그런지 아시는 분은 댓글 부탁드립니다.

관련 정보