Parte Um
Eu me deparei com um aplicativo hotspot Ubuntu que permite que você forneça wi-fi através do Ubuntu, então espero que isso ajude com esse aspecto do que você está procurando.
A fonte do artigo está aqui link
Para instalar o ppa, execute os seguintes comandos
sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install ap-hotspot
Agora, na versão 14.04, o hostapd não funciona corretamente, portanto os comandos a seguir farão o downgrade do hostapd e usarão o apt para manter o pacote, evitando atualizações automáticas.
Para 64 bits
cd /tmp
wget http://archive.ubuntu.com/ubuntu/pool/universe/w/wpa/hostapd_1.0-3ubuntu2.1_amd64.deb
sudo dpkg -i hostapd*.deb
sudo apt-mark hold hostapd
Ou, para 32 bits
cd /tmp
wget http://archive.ubuntu.com/ubuntu/pool/universe/w/wpa/hostapd_1.0-3ubuntu2.1_i386.deb
sudo dpkg -i hostapd*.deb
sudo apt-mark hold hostapd
Para inicializar e configurar. . .
sudo ap-hotspot start
Para reconfigurar após a instalação. . .
sudo ap-hotspot configure
Para parar o ponto de acesso. . .
sudo ap-hotspot stop
e para reiniciar. . .
sudo ap-hotspot restart
Para uma lista de comandos. . .
ap-hotspot
Parte Dois : Autenticação baseada na Web
adaptado de link
Atualizei alguns dos comandos para cumprir a prática mais atual de usar o sudo.
Primeiro instale os módulos de compilação
sudo apt-get install build-essential linux-headers-generic automake subversion libtool
Para baixar e criar o pacote fonte do pepperspot; execute os seguintes comandos:
svn co svn://svn.code.sf.net/p/pepperspot/code/trunk pepperspot
cd pepperspot
autoreconf -f -i
./configure
make
sudo make install
sudo modprobe ipv6
sudo apt-get install radvd iptables libc6-dev quagga apache2 libapache2-mod-php5 libssl-dev freeradius
1.) Ativar o IPv6
Antes de mais nada, certifique-se de que o IPv6 esteja ativado em seu kernel. Se o IPv6 é compilado como um módulo, digite:
sudo modprobe ipv6
1.1) Autoconfiguração sem estado
Este é um exemplo do arquivo de configuração /etc/radvd.conf :
interface ath0
{
AdvSendAdvert on;
AdvIntervalOpt on;
MinRtrAdvInterval 2;
MaxRtrAdvInterval 6;
prefix 2001:db8:1::/64
{
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
RDNSS 2001:db8:2::1
{
AdvRDNSSPreference 8;
AdvRDNSSOpen off;
AdvRDNSSLifetime 30;
};
};
Substitua as linhas de interface, prefixo e RDNSS (informações do servidor DNS) por seus próprios valores e inicie o radvd com:
sudo radvd -C /etc/radvd.conf
1.2) Endereçamento e roteamento
Um portal cativo tem que rotear pacotes de um usuário autenticado para a Internet. Portanto, o sistema deve ter o encaminhamento IPv6 ativado. Você pode ativá-lo com:
echo "1" | sudo tee /proc/sys/net/ipv6/conf/all/forwarding
Para manter essa configuração persistente, você pode usar o seguinte comando:
echo 'net.ipv6.conf.all.forwarding=1' | sudo tee -a /etc/sysctl.conf
O encaminhamento de IPv6 desabilitará a autoconfiguração do IPv6, de modo que a configuração de rede (atribuição de endereços e rotas) pode ser definida estaticamente ou dinamicamente com daemons de roteamento. Para o último procedimento, veja a seção 2.
Se você quiser usar o procedimento de endereçamento e roteamento estático, supondo que eth0 seja a interface conectada à rede IPv6 à Internet, digite o seguinte comando e substitua por seu próprio valor.
Atribuir endereço na interface com fio:
sudo ip -6 addr add 2001:db8:1::1234/64 dev eth0
Adicione a configuração de rota padrão (substitua pelo seu valor de endereço de rota):
sudo route -A inet6 add default gw fe80::1:2:3:4 dev eth0
Você pode ativar esta configuração persistente para inserir a configuração de rede em seu / etc / network / intefaces como você pode ver neste exemplo:
auto eth0
iface eth0 inet6 static
address 2001:db8:1::1234
netmask 64
gateway fe80::1:2:3:4
pre-up modprobe ipv6 # to be sure that ipv6 is enabled before we turn up the interface
Observe que você não precisa configurar o endereço na interface conectada à caixa Access Point (ou a interface sem fio, se você usar as).
1.3) IPv4
A configuração do IPv4 é mais ou menos a mesma do que o IPv6, exceto que você não precisa anunciar o cliente para a configuração da rede. O PepperSpot integra um módulo DHCP para atribuir um endereço IPv4 a clientes remotos. Você pode desativar este módulo na configuração do PepperSpot se o link sem fio já tiver um servidor DHCP ou se a configuração dos clientes estiver configurada estaticamente. Você precisa, no entanto, configurar a interface vinculada à rede IPv4.
Da mesma forma, ative o encaminhamento IPv4 usando os seguintes comandos:
echo "1" | sudo tee /proc/sys/net/ipv4/conf/all/forwarding
echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
e configure o endereço e a rota da interface (substitua por seus parâmetros):
sudo ip addr add 192.168.0.1/24 dev eth1
sudo route add default gw 192.168.0.254 dev eth1
Você pode usar o seguinte comando de bloco para atualizar seu arquivo / etc / network / interfaces:
echo 'auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 24
gateway 192.168.0.254' | sudo tee /etc/network/interfaces
1.4) Suporte do Netfilter
O PepperSpot usará algumas regras do Netfilter para continuar a comunicação entre o cliente e a Internet. Portanto, o sistema deve suportar o Netfilter. Se não for o caso, modifique a configuração do seu kernel:
Para o IPv4, você precisa ativar o suporte Nat, Mangle e de rastreamento;
Para o IPv6, você precisa apenas do suporte básico.
1.5) Notas
Todos os serviços (Radius, servidor web, PepperSpot, ...) podem ser instalados em sistemas que fornecem acesso Wi-Fi (modo Master). Pode ser um dispositivo incorporado ou um sistema do zero configurado como um ponto de acesso.
Para este caso, o seu cartão Wi-Fi deve suportar o modo Mestre.
Por exemplo, se você usar a interface sem fio com o driver madwifi, veja um exemplo de script de inicialização:
#!/bin/bash
# Setting ath0 in Master mode
# Replace PepperSpot by your SSID
wlanconfig ath0 destroy
wlanconfig ath0 create wlandev wifi0 wlanmode ap
iwconfig ath0 essid "PepperSpot"
ifconfig ath0 up
2) Configure o conjunto de roteamento Quagga
A suíte de roteamento Quagga implementa alguns protocolos de roteamento IPv4 e IPv6. Esta seção descreve a instalação do protocolo RIPng para permitir o roteamento IPv6.Assumimos que você tenha um prefixo IPv6 delegado e que você precise rotear a comunicação para esse prefixo. Se não for o caso, você pode pular esta seção.
A configuração do quagga é feita através da configuração de alguns arquivos de configuração no diretório / etc / quagga , mas o quagga suite integra algumas interfaces do tipo cisco para cada protocolo para permitir a configuração em tempo real. para visualizar algumas informações de roteamento, como a tabela de roteamento.
Você pode colocar as configurações de rede IPv6 e IPv4 descritas anteriormente, na configuração do protocolo de roteamento. Para cada protocolo desejado, ative-o em / etc / quagga / daemon .
Precisamos ativar o zebra, porque é o principal módulo de roteamento necessário para usar outro protocolo e configurar interfaces. No nosso caso, só precisamos adicionar o RIPng também:
# This file tells the quagga package which daemons to start.
#
# Entries are in the format: <daemon>=(yes|no|priority)
# 0, "no" = disabled
# 1, "yes" = highest priority
# 2 .. 10 = lower priorities
# Read /usr/share/doc/quagga/README.Debian for details.
#
# Sample configurations for these daemons can be found in
# /usr/share/doc/quagga/examples/.
#
# ATTENTION:
#
# When activation a daemon at the first time, a config file, even if it is
# empty, has to be present *and* be owned by the user and group "quagga", else
# the daemon will not be started by /etc/init.d/quagga. The permissions should
# be u=rw,g=r,o=.
# When using "vtysh" such a config file is also needed. It should be owned by
# group "quaggavty" and set to ug=rw,o= though. Check /etc/pam.d/quagga, too.
#
zebra=yes
bgpd=no
ospfd=no
ospf6d=no
ripd=no
ripngd=yes
isisd=no
Agora temos que criar um arquivo de configuração para cada daemon lançado.
arquivo /etc/quagga/zebra.conf :
!
! Zebra configuration saved from vty
! 2008/04/10 12:18:58
!
hostname MobSpot
password ***********
enable password *************
!
interface ath0
ipv6 nd suppress-ra
!
interface eth0
ipv6 address 2001:db8:1::1234/64
ipv6 nd suppress-ra
!
interface eth1
ip address 192.168.0.1/24
ipv6 nd suppress-ra
!
interface eth2
ipv6 nd suppress-ra
!
interface eth3
ipv6 nd suppress-ra
!
interface lo
!
interface tun0
ipv6 nd suppress-ra
!
interface wifi0
ipv6 nd suppress-ra
!
ipv6 forwarding
!
!
line vty
!
Neste arquivo, configuramos a configuração estática de cada interface vinculada à rede de serviços (eth0 e eth1).
Arquivo/etc/quagga/ripngd.conf :
! -*- rip -*-
!
! RIPngd sample configuration file
!
! $Id: ripngd.conf.sample,v 1.1.1.1 2002/12/13 20:15:30 paul Exp $
!
hostname MobSpot
password ***********
enable password ************
!
! debug ripng events
! debug ripng packet
!
!
router ripng
network eth0
redistribute connected
redistribute static
route 2001:db8:1::/64
!
line vty
!
Neste arquivo, configuramos o protocolo RIPng, indicando que somos capazes de rotear o pacote para o prefixo 2001: db8: 1 :: / 64 na interface eth0.
Para os dois arquivos, a primeira seção definirá a senha para as interfaces de configuração (vty). A linha de ativação da senha indica que é necessária uma senha para obter o direito de reconfigurar o daemon. Não esqueça a linha line vty para habilitar esta interface de configuração.
Para o tipo de configuração zebra:
sudo telnet 127.0.0.1 zebra
Para configuração de RIPng:
sudo telnet 127.0.0.1 ripngd
Nota: Após a autenticação (com a linha de senha autenticada no arquivo de configuração), você obterá uma linha de comando para configurar o daemon. Tipo "?" para ver os comandos disponíveis.
Para concluir, reinicie os daemons quagga:
sudo /etc/init.d/quagga restart
Nota: Se você precisar configurar o roteamento IPv4, adapte essa configuração ao daemon do RIP.
3) Configuração do Apache
O PepperSpot precisa se comunicar com um servidor da Web instalado na mesma máquina para permitir que os clientes prossigam a autenticação. O servidor web deve ser configurado para SSL, PHP e CGI.
Aqui está a configuração para o servidor web Apache2:
Gere um certificado SSL para garantir a identidade do servidor da Web:
sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/key.pem
O segundo passo é carregar o módulo Apache2-SSL:
sudo a2enmod ssl
O servidor da web precisa de um host virtual para ser acessado. Crie o arquivo / etc / apache2 / sites-available / pepperspot com o seguinte conteúdo (Adapte-se à sua configuração necessária):
NameVirtualHost *:443
<VirtualHost *:443>
ServerAdmin webmaster@pepperspot
SSLEngine on
SSLCertificateFile /etc/apache2/key.pem
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2s default start page
# in /apache2-default/, but still have / go to the right place
RedirectMatch ^/$ /apache2-default/
</Directory>
# CGI - We need cgi support to communicate with PepperSpot
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
</VirtualHost>'
Se você quiser modificar o nome do host virtual, não se esqueça de que o Apache precisa ouvir o endereço IPv6 e IPv4 para o modo de pilha dupla e a interface IPv4 ou IPv6 com relação ao modo único que você escolherá.
Adicione /etc/apache2/ports.conf para permitir a escuta HTTPS (se ainda não estiver presente) com o seguinte código de bloco:
echo '<IfModule mod_ssl.c>
Listen 443
</IfModule>' | sudo tee -a /etc/apache2/ports.conf
Finalmente, carregue o site:
sudo a2ensite pepperspot
sudo /etc/init.d/apache2 reload
4) Configuração do FreeRadius
O PepperSpot é capaz de se comunicar com um servidor Radius através do protocolo IPv4 ou IPv6, com relação à configuração do endereço do servidor radius em /etc/pepper.conf. Aqui está a configuração do FreeRadius Server. Para ter suporte a IPv6, você precisa de uma versão do FreeRadius & gt; = 2.0.
A configuração do FreeRadius é complexa, e o seguinte descreve apenas uma configuração elementar para habilitar o suporte a IPv6 no FreeRadius, e uma maneira fácil de adicionar algumas contas de usuário. Se você quer uma configuração melhor, veja a documentação do FreeRadius.
4.1) Configuração do IPv6
Modifique o arquivo /etc/freeradius/radiusd.conf para adicionar a seguinte seção:
# For authentication
listen {
type = auth
# ipaddr = *
ipv6addr = ::1
port = 0
# interface = eth0
# clients = per_socket_clients
}
# For accounting
listen {
type = acct
# ipaddr = *
ipv6addr = ::1
port = 0
# interface = eth0
# clients = per_socket_clients
}
Com esta configuração, substitua :: 1 pelo campo ipv6addr pelo endereço no qual o FreeRadius deve ouvir. port = 0 significa que as portas padrão do Radius são usadas. Se você especificar * para ipv6addr, o FreeRadius escutará em cada endereço IPv6 configurado no sistema.
Agora, você precisa configurar um cliente FreeRadius (chamado de NAS), normalmente o NAS é o portal cativo.
Abra o arquivo /etc/freeradius/clients.conf e adicione as seguintes linhas:
client ::1 { # here ::1 is the name of the client. Replace with your own value
ipv6addr = ::1
secret = testing123
shortname = localhost
nastype = other
}
Se o PepperSpot e o FreeRadius estiverem em uma caixa diferente, o ipv6addr deve ser substituído pelo endereço com o qual o PepperSpot e o FreeRadius se comunicam. Modifique o nome curto também.
Para reiniciar o FreeRadius:
sudo /etc/init.d/freeradius restart
4.2) Configuração do IPv4
Para a configuração IPv4 do FreeRadius, substitua o campo ipv6addr por ipaddr e preencha-o com o endereço IPv4 desejado.
4.3) Contas
Finalmente, precisamos criar contas em / etc / freeradius / users:
toto Cleartext-Password:="totoilsaitpas"
ping6 Cleartext-Password:="pong6"
Reiniciar o FreeRadius:
sudo /etc/init.d/freeradius restart
5) Configuração do PepperSpot
Copie alguns arquivos de configuração:
sudo cp doc/pepper.conf /etc/
sudo cp doc/hotspotlogin.cgi /usr/lib/cgi-bin/
sudo chmod +x /usr/lib/cgi-bin/hotspotlogin.cgi
Para o IPv4:
sudo cp doc/pepper.iptables /etc/
sudo chmod +x /etc/pepper.iptables
Para o IPv6:
sudo cp doc/pepper.ip6tables /etc/
sudo chmod +x /etc/pepper.ip6tables
5.2) iptables
Modifique os scripts /etc/pepper.iptables e / ou /etc/pepper.ip6tables e adapte $ INTIF (interface conectada ao ponto de acesso ou à interface sem fio), $ EXTIF4 (interface conectada à LAN IPv4) e $ EXTIF6 (interface conectada à rede IPv6) valores referentes à sua configuração. Note que para a configuração dual stack, $ EXTIF4 e $ EXTIF6 podem ter o mesmo valor.
Você pode seguir o restante da configuração a partir da documentação do usuário do pepperspot. link Existe apenas uma seção de configuração à esquerda.