AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 706462
Accepted
puk
puk
Asked: 2015-07-17 22:43:49 +0800 CST2015-07-17 22:43:49 +0800 CST 2015-07-17 22:43:49 +0800 CST

Como configurar o iptables para a máquina do roteador local?

  • 772

Eu configurei uma máquina linux local (14.0.4 Ubuntu) como um roteador e posso fazer o seguinte:

  • ping servidor/roteador dos clientes
  • ping clientes do servidor/roteador
  • ping um cliente do outro
  • pingar o modem/roteador atrás do servidor/roteador

Mas não consigo pingar o google ou 8.8.8.8. Eu recebo os seguintes erros:

ping: unknown host www.google.com
connect: network is unreachable

Mas posso emitir esses dois comandos no servidor/roteador, sem problemas, o que me leva a acreditar que é um iptablesproblema relacionado. Alguém pode dar uma olhada no código abaixo, que eu uso para inicializar o iptables, e me dizer se há algum erro flagrante.

#!/bin/bash

ethInternal=eth1
ethExternal=eth0

sudo iptables --flush 
sudo iptables --table nat --flush
sudo iptables --delete-chain 
sudo iptables --table nat --delete-chain 

sudo iptables -t nat -A POSTROUTING -o $ethExternal -j MASQUERADE
sudo iptables -A FORWARD -i $ethExternal -o $ethInternal -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $ethInternal -o $ethExternal -j ACCEPT

EDITAR 1

client: netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.168.66.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0

EDITAR 2

client: route add -net default gw 192.168.66.254
client: netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.66.254  0.0.0.0         UG        0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
192.168.66.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0

EDITAR 3

SV-01: vi /var/log/kern.log

A seção relevante do arquivo de log pode ser encontrada aqui .

iptables
  • 2 2 respostas
  • 2512 Views

2 respostas

  • Voted
  1. MadHatter
    2015-07-18T00:03:35+08:002015-07-18T00:03:35+08:00

    O cliente não possui uma rota padrão por meio de sua caixa de roteador. Tentar

    route add -net default gw a.b.c.d
    

    no cliente, onde a.b.c.dé o endereço voltado para o cliente do firewall.

    • 5
  2. Best Answer
    Andrey Sapegin
    2015-07-18T02:04:12+08:002015-07-18T02:04:12+08:00

    Bem, sua configuração parece ser um pouco curta. Estou anexando a configuração do meu roteador como exemplo de trabalho.

    Além disso, você está usando '-m state' para rastrear conexões relacionadas e estabelecidas, enquanto eu geralmente utilizo '-m conntrack'.

    O que você pode tentar - registrar pacotes descartados e ver o que e por que está sendo descartado pelo iptables. Estou escrevendo minha configuração (com registro e também incluindo a política ACCEPT padrão para a cadeia OUTPUT) abaixo. Para ativá-lo, salve-o em um arquivo (por exemplo, 'iptables_test_rules.txt') e aplique-o usando 'iptables-restore iptables_test_rules.txt'. Consulte 'iptables -L -v' para obter uma visão geral das regras e seu syslog para conexões perdidas (atenção: seu syslog pode crescer muito rápido!).

    *filter
    
    # 1. Logging.
    # 1.1. logdrop chain
    -N logdrop                                                                   
    -A logdrop -j LOG --log-prefix "dropped: "
    -A logdrop -j DROP
    
    # 2. Set default policies for INPUT, OUTPUT and FORWARD chains
    -P INPUT DROP
    -P OUTPUT ACCEPT
    -P FORWARD DROP
    
    # 3. INPUT CHAIN
    # 3.0. Allow loopback
    -A INPUT -i lo -j ACCEPT
    # 3.1. Allow already established connections
    -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT 
    # 3.2. log and drop invalid packets
    -A INPUT -m conntrack --ctstate INVALID -j logdrop
    # 3.3. Allow DHCP renew on eth0
    -A INPUT -p udp -m udp --dport 68 -i eth0 -j ACCEPT
    # 3.4. Allow any connections from lan
    -A INPUT -i eth1 -j ACCEPT
    # 3.5. Log and drop the rest
    -A INPUT -j logdrop
    
    # 4. Forwarding
    # 4.0. Allow forwarding from lan to wan
    -A FORWARD -i eth1 -o eth0 -j ACCEPT
    # 4.1. Allow forwarding from lan to lan
    -A FORWARD -i eth1 -o eth1 -j ACCEPT
    # 4.2. Allow forwarding from wan to lan, but only for already established connections
    -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
    # 4.4. log and drop the rest in FORWARD chain
    -A FORWARD -j logdrop
    
    COMMIT
    
    *nat
    
    # Set default NAT policies to accept
    -P PREROUTING ACCEPT                                           
    -P POSTROUTING ACCEPT
    -P OUTPUT ACCEPT
    
    # 5. NAT
    # 5.1. Enable NAT                                                                    
    -A POSTROUTING -o eth0 -j MASQUERADE
    
    COMMIT
    
    *raw
    COMMIT
    
    • 2

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve