Estou criando um aplicativo GUI que controlará meu laptop para que ele atue como um hotspot wifi. Posso alterar as distribuições, por isso quero encontrar uma solução que funcione geralmente para todas as distribuições. Atualmente, estou fazendo isso no Fedora 17.
O uso do botão "Usar como ponto de acesso" do NetworkManager funciona muito bem para criar um ponto de acesso ad-hoc:
Eu quero recriar essa funcionalidade com comandos de terminal.
Abaixo estão dois métodos que tentei fazer isso, mas ainda não encontrei uma solução.
Método 1: iwconfig
Usando pesquisas de toda a web, tentei o seguinte comando:
# 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
Onde saved-hotspot-iptables
está um arquivo que eu gerei com iptables-save > saved-hotspot-iptables
o iptables definido pela função "Use as Hotspot".
Método 1 Problema Os
dispositivos podem ver o SSID, mas não conseguem se conectar. A execução ip a
revela o seguinte sobre o wlan0:
...
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state DORMANT qlen 1000
...
O aviso NO-CARRIER
está presente e o estado está em DORMANT
vez de UP
.
A execução ifconfig wlan0
mostra o seguinte:
...
wlan0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
...
Observe que RUNNING
está faltando como um dos sinalizadores.
Método 2: nmcli
Se o botão "Usar como ponto de acesso" do NetworkManager for pressionado pelo menos uma vez no sistema, ele /etc/sysconfig/network-scripts/ifcfg-Hotspot
será criado e eu posso usar o seguinte comando para iniciar um ponto de acesso em funcionamento:
# ifconfig wlan0 up
# nmcli con up id Hotspot
# iwconfig wlan0 essid my-lappy key 0123456789
Método 2 Problema
Se o usuário nunca pressionou "Usar como ponto de acesso" no NetworkManager antes, nmcli con up id Hotspot
não funcionará. Eu olhei, nm-connection-editor --create
mas não consegui encontrar muita informação. Também procurei criar manualmente, /etc/sysconfig/network-scripts/ifcfg-Hotspot
mas esse método não parece elegante nem extensível a outras distribuições.