두 개의 무선 인터페이스가 있고 각 인터페이스에서 서로 다른 AP를 실행하고 싶습니다. (두 하드웨어 모두 다중 SSID를 지원하지 않습니다.)
.conf
각 인터페이스에 대한 파일이 있습니다 . 어떻게 hostapd
자동으로 사용할 수 있나요?
이것은 잘 작동합니다:
# hostapd -dd /etd/hostapd/hostapd.wlan0.conf /etc/hostapd/hostapd.wlan1.conf
문제는 자동으로 작동하게 만드는 것입니다.
클레임은 설정하는 것입니다/etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.wlan0.conf /etc/hostapd/hostapd.wlan1.conf"
그러나 전체 문자열이 존재하지 않는 파일로 해석되기 때문에 이는 작동하지 않습니다.
나는 이것이 /usr/lib/systemd/system/hostapd.service
다음과 같이 사용되는 것을 봅니다.
ExecStart=/usr/sbin/hostapd -B -P /run/hostapd.pid -B $DAEMON_OPTS ${DAEMON_CONF}
그러나 나는 또한 뭔가 다른 일을 하는 것을 보았습니다:/usr/lib/systemd/system/[email protected]
ExecStart=/usr/sbin/hostapd -B -P /run/hostapd.%i.pid $DAEMON_OPTS /etc/hostapd/%i.conf
(무슨 %i
뜻인가요?) 그런데 에 관한 것보다는 systemctl
아는 것에 관한 것 같습니다 .hostapd
hostapd@
답변1
질문의 끝에 거의 도달했습니다. %i
에 사용됩니다나인스턴스화제공하다. 다음은 에 설명된 인스턴스 역할에서 발췌한 것입니다.시스템 유닛(5):
유닛 파일은 "인스턴스 이름"이라는 단일 매개변수를 사용하여 매개변수화할 수 있습니다. 그런 다음 단위는 여러 서비스 또는 기타 단위의 정의 역할을 하는 "템플릿 파일"을 기반으로 구축됩니다. 템플릿 단위는 이름 끝에(유형 접미사 앞) "@"가 있어야 합니다. 완전한 유닛의 이름은 "@"와 유닛 유형 접미사 사이에 인스턴스 이름을 삽입하여 구성됩니다. 유닛 파일 자체 내에서 인스턴스 매개변수는 "%i" 및 기타 지정자를 사용하여 참조할 수 있습니다. 아래를 참조하세요.
또는지정자 목록:
├─────────┼───────────────┼───────────────────────────────────────────────────┤ │ │ │For instantiated units this is the string between │ │"%i" │Instance name │the first "@" character and the type suffix. Empty │ │ │ │for non-instantiated units. │ ├─────────┼───────────────┼───────────────────────────────────────────────────┤
인스턴스화된 서비스를 사용하면 독립형 서비스가 실행됩니다.주인각 인터페이스에 대한 데몬입니다. 예를 들어, 이를 통해 한 인스턴스가 변경되거나 종료되는 동안 다른 인스턴스는 활성 상태가 보장되므로 다른 인터페이스는 영향을 받지 않습니다.
인스턴스를 사용하여 이 작업을 수행할 수 있습니다.
모든 곳에서 기본 설정을 복원하고 비활성화 및 중지
hostapd.service
수정되지 않은 내용에 맞게 구성 이름을 바꾸십시오.주인서비스를 인스턴스화하려면
%i.conf
인터페이스 이름 뒤에 다음이 필요합니다.conf
.mv -i /etd/hostapd/hostapd.wlan0.conf /etd/hostapd/wlan0.conf mv -i /etd/hostapd/hostapd.wlan1.conf /etd/hostapd/wlan1.conf
사용인스턴스화문자로 구별되는 Hostapd 서비스 버전은
@
OP에 이미 작성된 일반 인스턴스와 구성이 다릅니다. 인터페이스당 한 번:systemctl enable --now hostapd@wlan0 systemctl enable --now hostapd@wlan1
마지막으로 데몬은 두 번 실행됩니다.
/usr/sbin/hostapd -B -P /run/hostapd.wlan0.pid /etc/hostapd/wlan0.conf
/usr/sbin/hostapd -B -P /run/hostapd.wlan1.pid /etc/hostapd/wlan1.conf
(그 안에 뭔가가 있지 않는 한 $DAEMON_OPTS
).
답변2
/usr/lib/systemd/system/hostapd.service
이 두 구성 파일을 하드코딩하도록 편집했습니다 .
편집 후 실행해야 할 것 같습니다.
# systemctl daemon-reload
불쾌한 해킹처럼 보이지만 작동합니다.