Tworzę aplikację GUI, która będzie kontrolować mój laptop, aby działał jak hotspot Wi-Fi. Mogę zmienić dystrybucje, więc chcę znaleźć rozwiązanie, które będzie działać ogólnie dla wszystkich dystrybucji. Obecnie robię to na Fedorze 17.
Użycie przycisku „Użyj jako hotspot” NetworkManagera działa bardzo dobrze, aby utworzyć hotspot ad-hoc:
Chcę odtworzyć tę funkcję za pomocą poleceń terminalu.
Poniżej znajdują się dwie metody, które starałem się osiągnąć, ale nie znalazłem jeszcze rozwiązania.
Metoda 1: iwconfig
Korzystając z badań z całej sieci, wypróbowałem następujące polecenie:
# ifconfig wlan0 10.42.0.1 netmask 255.555.255.0 broadcast 10.42.0.255 up
# iwconfig wlan0 essid my-lappy mode ad-hoc key 0123456789
# iptables-restore < saved-hotspot-iptables
# echo 1 > /proc/sys/net/ipv4/ip_forward
# dhclient wlan0
gdzie saved-hotspot-iptables
jest plik, który wygenerowałem za iptables-save > saved-hotspot-iptables
pomocą iptables ustawionych przez funkcję „Użyj jako hotspot”.
Metoda 1 Problem
Urządzenia widzą SSID, ale nie mogą się połączyć. Uruchomienie ip a
ujawnia następujące informacje o wlan0:
...
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DORMANT qlen 1000
...
Zawiadomienie NO-CARRIER
jest obecne, a stan jest DORMANT
zamiast UP
.
Uruchomienie ifconfig wlan0
pokazuje:
...
wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
...
Zauważ, że RUNNING
brakuje jej jako jednej z flag.
Metoda 2: nmcli
Jeśli przycisk „Użyj jako hotspot” NetworkManagera zostanie naciśnięty co najmniej raz w systemie, /etc/sysconfig/network-scripts/ifcfg-Hotspot
zostanie utworzony i mogę użyć następującego polecenia, aby uruchomić działający hotspot:
# ifconfig wlan0 up
# nmcli con up id Hotspot
# iwconfig wlan0 essid my-lappy key 0123456789
Metoda 2 Problem
Jeśli użytkownik nigdy wcześniej nie nacisnął „Użyj jako hotspot” w NetworkManager, nmcli con up id Hotspot
nie będzie działać. Patrzyłem, nm-connection-editor --create
ale nie mogłem znaleźć wielu informacji. Zajrzałem także do ręcznego tworzenia, /etc/sysconfig/network-scripts/ifcfg-Hotspot
ale ta metoda nie wydaje się elegancka ani rozszerzalna na inne dystrybucje.