ORIGINAL:
Acabei de mudar de uma antiga instalação Linux (Debian squeeze) para uma nova (Linux Mint 17.3) para o meu roteador (estou usando um PC desktop completo com uma instalação do Linux como meu roteador). O PC Linux se conecta diretamente ao meu modem DSL e negocia uma conexão PPPoE, em seguida, roteia conexões de internet para todos os meus outros dispositivos.
Tanto quanto eu posso dizer, eu configurei o mesmo que a instalação anterior do Debian. Eu tinha um simples script rc.local
para configurar o iptables, e é o mesmo na nova caixa e está sendo executado (assegurei isso executando /etc/rc.local
de um console raiz). Eu também configurei o DNS na nova caixa.
A maioria das coisas funciona da mesma forma, mas estou tendo um problema: a VPN na minha caixa do Windows não consegue mais se conectar. Olhando para o Wireshark, percebo que os pacotes PPTP iniciais parecem ter sido enviados e recebidos com sucesso, mas depois há um pacote "Set-Link-Info" enviado da minha caixa do Windows, e a caixa do Windows inicia a configuração "Solicitação de configuração do PPP LCP "pacotes. Neste ponto, não recebe resposta. A captura do Wireshark passando por cima da minha configuração Debian antiga mostrou que, naquele momento, ela recebia respostas, resultando em uma "Ack de configuração do PPP LCP".
Eu realmente não consigo descobrir o que mais checar. Eu não entendo porque a conexão PPTP está ficando presa aqui com a minha nova configuração. Alguma idéia de como posso solucionar problemas?
Nota: Aqui está o /etc/rc.local
que tenho (é o mesmo em ambas as instalações) que configura toda a minha configuração do iptables:
#!/bin/sh -e
echo "*** Running rc.local ***"
# First up, make sure 'net.ipv4.ip_forward=1' exists, uncommented, in /etc/sysctl.conf (just do this manually)
echo "MAKE SURE net.ipv4.ip_forward=1 EXISTS, UNCOMMENTED, IN /etc/sysctl.conf OR NAT WILL NOT WORK!!!"
echo ""
# Firewall variables
#WAN_IFACE="eth0" # At the time of writing, this is the NIC built into the mobo
WAN_IFACE="ppp0" # Virtual PPP interface when using PPPoE
LAN_IFACE="eth1" # At the time of writing, this is the extension NIC card
LAN_IP="192.168.1.1/24" # Class-C internal network
# Setup iptables... flush existing rules
iptables -F
iptables -t nat -F
set +e
# Set +e here to continue on error; iptables may give an error if this chain doesn't currently exist and we try to delete it
iptables -X LOGGING
set -e
# Set default policies for chains
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# Allow all local loopback access
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT
# Allow incoming traffic for established connections
iptables -A INPUT -i $WAN_IFACE -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i $WAN_IFACE -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i $LAN_IFACE -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i $LAN_IFACE -p udp -m state --state RELATED,ESTABLISHED -j ACCEPT
# Allow incoming ICMP traffic
iptables -A INPUT -p icmp -j ACCEPT
###
# Uncomment lines in this section to allow unsolicited incoming traffic on ports
## Open common service ports
## SSH
#iptables -A INPUT -i $WAN_IFACE -p tcp --destination-port 22 -j ACCEPT
## HTTP (8080 + 8081)
#iptables -A INPUT -i $WAN_IFACE -p tcp --destination-port 8080 -j ACCEPT
#iptables -A INPUT -i $WAN_IFACE -p tcp --destination-port 8081 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --destination-port 8080 -j ACCEPT
iptables -A INPUT -i eth1 -p tcp --destination-port 8081 -j ACCEPT
# DNS
iptables -A INPUT -i eth1 -p tcp --destination-port 53 -j ACCEPT
iptables -A INPUT -i eth1 -p udp --destination-port 53 -j ACCEPT
# Local Samba connections
iptables -A INPUT -p tcp --syn -s $LAN_IP --destination-port 139 -j ACCEPT
iptables -A INPUT -p tcp --syn -s $LAN_IP --destination-port 445 -j ACCEPT
###
# NAT setup - allow the NAT masquerading
iptables -t nat -A POSTROUTING -o $WAN_IFACE -j MASQUERADE
# Allow forwarding of packets between the Internet and local network interface(s)
iptables -A FORWARD -i $WAN_IFACE -o $LAN_IFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $LAN_IFACE -o $WAN_IFACE -j ACCEPT
# Logging setup
iptables -N LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix="IPTables-Dropped: " --log-level 4
iptables -A LOGGING -j DROP
# Logging; uncomment the below to log dropped input packets to syslog (verbose; only use for debugging!)
echo "Uncomment the necessary lines in rc.local to enable iptables logging..."
#iptables -A INPUT -j LOGGING
echo "*** Finished running rc.local ***"
exit 0
ATUALIZAÇÃO:
Eu tenho feito mais algumas investigações sobre isso, e a análise do Wireshark sobre o que está sendo divulgado pelo meu roteador Linux revela uma diferença muito significativa. Aqui estão as duas imagens, primeiro da minha antiga caixa Debian, cujo roteamento funciona, e segundo da minha nova caixa Mint, onde não:
Substitui os endereços IP por faixas vermelhas e azuis para indicar o endereço IP público do roteador Linux e o endereço remoto com o qual estamos nos comunicando para estabelecer uma conexão VPN por meio do protocolo PPTP. Além disso, o endereço IP da minha máquina Windows na rede local é destacado em verde.
A coisa a notar é o que acontece depois que o protocolo PPTP termina e nós mudamos para os pacotes PPP LCP. Na caixa Debian, ele continua a converter o endereço de origem desses pacotes para o meu endereço IP público antes de enviá-los para a Internet pública. Mas na minha caixa Linux Mint, o endereço de origem dos pacotes que estão sendo enviados ainda é mantido como o endereço de rede local da minha máquina Windows que está tentando estabelecer a conexão. Ele está enviando pacotes para a internet com um endereço de origem de classe C local - é claro que eles não estão sendo roteados!
A questão é: o que está causando o colapso do NAT aqui na minha caixa do Linux Mint que não está acontecendo na caixa do Debian? O iptables é o mesmo, o /etc/network/interfaces
é o mesmo. Eu não sei ... mas talvez essa descoberta ajude alguém aqui a me ajudar com o problema. : -)