Criando ponto de acesso WiFi em uma única interface no Linux

13

Estou tentando criar um hotspot WiFi ou um ponto de acesso no meu laptop Linux. Eu estou usando o Opensuse Kde 12.3.

Eu descobri um software chamado hostapd , que permite criar um hotspot, mas requer duas interfaces. Um conectado à Internet e o outro no qual você deseja criar o ponto de acesso ( tutorial aqui ). O problema que tenho é que eu não tenho conexão Ethernet. A interface wlan está sendo usada para se conectar à Internet.

Existe alguma maneira de criar o ponto de acesso na mesma interface que está conectada à Internet (como o software connectify faz no Windows)? Eu estava pensando em criar uma interface virtual (como a que o airmon-ng cria para monitorar wifi) e usá-la como a segunda interface. Isso é possível?

ATUALIZAÇÃO

Veja o que eu consegui fazer até agora:

1) Crie 2 interfaces (uma como estação e outra como ponto de acesso)

  iw phy phy0 interface add mySta type station
  iw phy phy0 interface add myAcc type __ap

2) Dê-lhes uma identificação separada do Mac

ifconfig myAcc hw ether A4:17:FE:6E:00:53
ifconfig myAcc 192.168.27.1 up

3) inicie o hostapd na interface myAcc

4) inicie o dnsmasq para fornecer o endereço IP para os dispositivos de conexão

Tudo isso funciona. Os dispositivos podem se conectar a essa rede e obter o endereço IP. O próximo passo é fornecer o ip masquerading

iptables --table nat --append POSTROUTING --out-interface mySta -j MASQUERADE
iptables --append FORWARD --in-interface myAcc -j ACCEPT

Mas a interface mySta agora não consegue se conectar à internet. É capaz de obter o Essid, mas não pode obter o endereço IP.

O comando dhclient mySta não mostra nenhuma mensagem e depois de algum tempo dá o erro:

ls: cannot access /var/run/netconfig//mySta/: No such file or directory

Alguém pode descobrir como obter o endereço IP?

    
por adityap174 04.07.2013 / 20:56

3 respostas

8

Para qualquer pessoa que esteja enfrentando esse problema, o problema está no endereço MAC. Eu comecei a interface do ponto de acesso, dei um endereço mac. Então, depois de executar o hostapd, adicionou a interface da estação, deu-lhe um endereço MAC diferente e conectou-o à rede e deu o endereço IP da estação como o gateway padrão dos clientes através do dnsmasq.

Agora tudo está funcionando corretamente.

Como apontado por Diblo Dk, você poderia usar interfaces virtuais e fictícias, mas o hostapd não estava funcionando com elas. Eu não sei porque.

Aqui estão os passos:

  1. desative o serviço do gerenciador de rede, pois isso interfere nas interfaces virtuais
  2. desligue o wlan0 usando ifconfig wlan0 down
  3. crie uma interface de ponto de acesso usando o comando iw (tipo __ap), atribua um endereço mac e ip diferente
  4. ative o hostapd nessa interface de acesso
  5. use o dnsmasq para designar os clientes de conexão nessa interface, endereços IP e forneça o gateway padrão como o ip da interface da estação a ser criada
  6. ative o dnsmasq na interface de acesso. Agora, o cliente poderá se conectar ao ponto de acesso e obter endereços IP.
  7. crie uma nova interface (tipo estação) atribua-lhe um endereço MAC separado e conecte-o à rede atribuindo o essid e usando o dhclient para obter o endereço IP.
  8. se necessário, execute o ip masquerading através do comando iptables
por 07.07.2013 / 11:16
2

Configurar uma rede fictícia

1 Abra o console

su -

2 Veja se você tem um driver fictício

modprobe -l | grep /net/dummy.ko

(!) Se você não tiver um driver simulado, vá para " Criar módulo do kernel ".

3 Carregar o driver simulado

modprobe dummy

(!) Não o adicione à inicialização se falhar.

4 Teste dummy0 colocando-o

ifconfig dummy0 10.246.75.1 netmask 255.255.255.0 broadcast 10.246.75.255 up

ifconfig

Ele fornecerá uma saída semelhante.

dummy0  Link encap:Ethernet  HWaddr 00:2D:32:3E:39:3B
        inet addr:10.246.75.1  Bcast:10.246.75.255  Mask:255.255.255.0
        ...

5 Adicione um driver simulado à inicialização

Edite o arquivo sys do kernel.

nano /etc/sysconfig/kernel

e adicione " dummy " a MODULES_LOADED_ON_BOOT.

MODULES_LOADED_ON_BOOT = "..."

MODULES_LOADED_ON_BOOT="dummy vmcp".

6 Defina as configurações de rede para dummy0

Crie o arquivo ifcfg-dummy0.

nano /etc/sysconfig/network/ifcfg-dummy0

Adicionar ao arquivo ifcfg-dummy0:

# Configuration for dummy0
BOOTPROTO=static

# This line ensures that the interface will be brought up during boot.
STARTMODE=onboot

# dummy0 - This is the main IP address that will be used for most outbound connections.
# The address, netmask and gateway are all necessary. The metric is not necessary but
# ensures you always talk to the same gateway if you have multiple public IPs from
# different subnets.
IPADDR=10.246.75.1
NETMASK=255.255.255.0
BROADCAST=10.246.75.255
GATEWAY=10.246.75.1



Criar módulo do kernel

1 Primeiro instalando as coisas necessárias

Abra o YaST.

Navegue para Software - > Software Management .

Tick:

Development 

[X] Base Development
[X] Linux Kernel Development
[X] C/C++ Development

2 Volte para o console e navegue até a origem do kernel

cd /usr/src/linux

3 Importe a configuração atual do kernel

zcat /proc/config.gz > .config

4 Menuconfig do kernel aberto

make menuconfig

5 Adicionar suporte ao driver do Dummy net

Navegue para Device Drivers - > Network device support

* Network core driver support
    M Dummy net driver support

(!) Se você tiver um asterisco ao lado de "Suporte ao driver do núcleo da rede", pule as etapas 7 e 9.

6 Compile o kernel

make -j(n+1)

Onde (n + 1) = número de núcleos de CPU mais um usado para acelerar a compilação. Para quatro núcleos use make -j5.

7 Instale o novo kernel

make install

8 Instalar módulos

make modules_install

9 Carregue o novo kernel

reboot



Definindo um VIPA (A parte sobre carregamento do módulo e ifcfg-dummy0): link
Configurar IPs estáticos: link
openSUSE 12.3 e Instalando Novas Versões do Kernel Linux a partir do kernel.org: link
OpenSUSE 11.2 - Como compilar um Kernel para iniciantes: link

    
por 06.07.2013 / 16:11
1

Criar interface virtual

Crie o arquivo ifcfg-wlan0: 0

nano /etc/sysconfig/network/ifcfg-wlan0:0

Adicionar ao arquivo ifcfg-wlan0: 0:

DEVICE=wlan0:0

# Configuration for wlan0:0
ONBOOT=yes

# This line ensures that the interface will be brought up during boot.
BOOTPROTO=static

# wlan0:0 - This is the main IP address that will be used for most outbound connections.
# The address, netmask and gateway are all necessary. The metric is not necessary but
# ensures you always talk to the same gateway if you have multiple public IPs from
# different subnets.
IPADDR=10.246.75.1
NETMASK=255.255.255.0
BROADCAST=10.246.75.255
GATEWAY=10.246.75.1

Os comandos para ativar a interface

ifup wlan0:0

Nota: Desligar a interface principal também encerra todos os seus aliases. Os aliases podem ser desligados independentemente de outras interfaces.

Verifique se a interface funciona

ifconfig

Ele fornecerá uma saída semelhante.

wlan0:0  Link encap:Ethernet  HWaddr 00:2D:32:3E:39:3B
         inet addr:10.246.75.1  Bcast:10.246.75.255  Mask:255.255.255.0
         ...
< p > handle-virtual-interfaces.html # post2350426 "> link

    
por 06.07.2013 / 23:58