Através do NetworkManager: Compartilhar conexão sem fio com a porta Ethernet com fio
No entanto, posso dizer-lhe como fazê-lo se quiser configurar tudo manualmente. De sua pergunta, parece que você já começou neste caminho.
1. Como faço para configurar corretamente um servidor DHCP básico e executá-lo corretamente
Primeiro, escolha e defina um endereço IP estático na interface WiFi. Digamos que seja wlan0 com o endereço 192.168.44.1 com a máscara de rede 255.255.255.0 (ou seja, / 24). Você precisa configurá-lo no NetworkManager para wlan0 ou em / etc / network / interfaces:
auto wlan0
iface wlan0 inet static
address 192.168.44.1
netmask 255.255.255.0
# Use a smaller MTU if you use VPN or PPPoE on your WAN
# mtu 1400
Se você configurá-lo em / etc / network / interfaces, poderá trazer a interface com:
sudo ifup wlan0
Ou reduza:
sudo ifdown wlan0
Em seguida, instale um servidor DHCP:
sudo apt-get install isc-dhcp-server
Edite o /etc/dhcp/dhcpd.conf:
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.44.255;
# This is the IP address of our LAN interface
option routers 192.168.44.1;
# Set the DNS server you offer to the hosts here, or you can leave Google's:
option domain-name-servers 8.8.8.8;
# If you want to use a domain name, put it here:
#option domain-name "example.com";
# This is the pool of addresses which will be offered to the clients:
subnet 192.168.44.0 netmask 255.255.255.0 {
range 192.168.44.100 192.168.44.200;
# Use a smaller MTU if you use VPN or PPPoE on the router
# option interface-mtu 1400;
}
Comece:
service isc-dhcp-server restart
2. Ativar roteamento
Você tem duas opções:
echo 1 > /proc/sys/net/ipv4/ip_forward
ou edite o arquivo /etc/sysctl.conf e defina net.ipv4.ip_forward = 1 e execute sysctl -p
3. Configurações de firewall
Isso é o que você precisa fazer:
- bloqueia coisas provenientes da WAN que você não deseja (opcional, mas recomendado)
- permite o tráfego do roteador para a WAN (nada especial)
- permite que as respostas da WAN trafiquem seu roteador (nada especial)
- permite o tráfego de DHCP e ping da interface da LAN (wlan0 no seu caso) para que os hosts possam se conectar ao roteador
- permite o tráfego proveniente da LAN e passa pela WAN para ser encaminhado através de você
- permite o tráfego proveniente da WAN e passando pela WAN e é uma resposta ao tráfego que você direcionou para ser roteado por você
- faça o NAT na máquina para que os hosts da LAN possam acessar a Internet compartilhando seu endereço IP
Permitir o tráfego de DHCP e ping através do firewall é necessário somente se você tiver alterado os padrões no Ubuntu, caso contrário, ele simplesmente funcionará. Caso contrário, basicamente, a correção é:
sudo iptables -I INPUT -i wlan0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT
sudo iptables -I INPUT -i wlan0 -p icmp --icmp-type 8 -j ACCEPT
(as portas UDP 67 e 68 são para DHCP, o segundo comando é ICMP tipo 8 a.k.a ping)
Eu não sei o quanto você agora sobre o firewall, então aqui está uma breve introdução.
Você pode inspecionar as regras do firewall com:
sudo iptables -L -n -v --line-numbers
Os pacotes terminarão em três situações possíveis, chamadas "cadeias":
- INPUT é o que vem de fora de sua máquina para sua máquina (exceto os pacotes roteados)
- OUTPUT é o que sai da sua máquina (exceto os pacotes roteados)
- FORWARD é o que vem / sai de / para sua máquina devido ao roteamento
Cada cadeia pode estar em dois modos:
- política ACCEPT significa que, a menos que haja uma regra que corresponda ao pacote e chame DROP, o pacote passará pela cadeia
- política DROP significa que, a menos que haja uma regra que corresponda ao pacote e chame ACCEPT, o pacote será descartado pela cadeia
Normalmente você quer:
- OUTPUT para estar no modo ACCEPT;
- AVANÇAR para estar no modo DROP e adicionar regras para permitir que o tráfego saia da sua LAN para a WAN, além de permitir que o tráfego de resposta passe da WAN para a LAN;
- ENTRADA para estar no modo DROP, exceto para permitir DHCP e ping da LAN, permitindo respostas ao tráfego enviado do roteador para WAN e, opcionalmente, abrindo portas para aplicativos de servidor (se você quiser executar um servidor da Web, por exemplo).
Além disso, você precisa adicionar uma regra que faça NAT. Isso é muito simples, por exemplo se eth0 for sua interface WAN:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Você pode listar as regras NAT com:
iptables -t nat -L -n -v --line-numbers
O que exatamente precisa ser feito para chegar lá depende de como seu sistema já está configurado. Normalmente eu crio um script que elimina todas as regras existentes e preenche tudo do zero.
A coisa toda, muito comentada:
# Set the correct names of the interfaces here:
wan=eth0
lan=wlan0
# Wipe out the current firewall config:
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t raw -F
iptables -t raw -X
# Set default policies for the chains in the filter table:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# INPUT (basic client)
# Allow loopback traffic (from us to us)
iptables -A INPUT -i lo -j ACCEPT
# Allow replies to traffic we have sent
iptables -A INPUT -m conntrack --ctstate related,established -j ACCEPT
# INPUT (router)
# Allow DHCP from LAN
iptables -I INPUT -i $lan -p udp --dport 67:68 --sport 67:68 -j ACCEPT
# Allow ping from LAN
iptables -I INPUT -i $lan -p icmp --icmp-type 8 -j ACCEPT
# FORWARD (router)
# Accept any traffic coming from LAN to route it
iptables -A FORWARD -i $lan -j ACCEPT
# Accept replies from WAN to traffic we routed from LAN
iptables -A FORWARD -i $wan -m state --state ESTABLISHED,RELATED -j ACCEPT
# NAT from LAN to WAN
iptables -t nat -A POSTROUTING -o $wan -j MASQUERADE
4. Mais sobre o hostapd
Você precisa proteger sua rede corretamente. É importante que o WPA seja definido como 2 (WPA2) e que os algoritmos de pares utilizem apenas CCMP (AES) e não TKIP (inseguro). Além disso, use uma senha complicada. Aqui está um exemplo de configuração /etc/hostapd/hostapd.conf
:
interface=wlan0
driver=nl80211
country_code=US
ssid=Home
hw_mode=g
channel=7
wpa=2
wpa_passphrase=complicated
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0
O que você provavelmente usará de maneira diferente é driver, ssid, talvez hw_mode, channel e, claro, wpa_passphrase. wpa_pairwise não é realmente necessário. Pode valer a pena olhar para link (sim uma distro diferente, mas eles geralmente têm bons exemplos).
5. Alguns extras
Você pode querer reduzir sua latência e QoS. Geralmente algo assim ajuda, na pior das hipóteses não faz mal e não precisa de ajustes:
ifconfig wlan0 txqueuelen 50
tc qdisc add dev wlan0 root sfq perturb 10
tc qdisc add dev eth0 root sfq perturb 10
6. IPv6
Nenhuma pista:)