Confusão sobre interfaces, iptables, conexões, conexão local

0

Eu configurei meu iptables hoje e encontrei algumas questões que ainda não consegui resolver. Então seria legal se alguém pudesse verificar ou responder o seguinte para esclarecer:

  1. Cada interface pode ser configurada para ipv4 ou / e ipv6 separadamente. Regras do iptables como iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT se aplicam a todas as interfaces (somente no ipv4)?
  2. Uma conexão única (como mostrado por netstat -na ) sempre usa somente uma interface ?
  3. A interface é escolhida automaticamente pelo endereço IP . Por exemplo, quando tiver algo como
    *:~$ ip addr
    1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    2: eth0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether * brd ff:ff:ff:ff:ff:ff
    inet 128.176.123.45 brd * scope global eth0
       valid_lft forever preferred_lft forever
    
    todos os IPs de 127.0.0.1 a 127.255.255.255 vão pela interface lo , o resto por eth0 (se houver roteamento possível; pode ser visto por netstat -r )?
  4. Situação: Um servidor e um cliente (para alguns softwares) são executados no mesmo computador e se comunicam entre si. Assim, o maschine se comunica consigo mesmo . O servidor escuta em alguma porta. Podemos usar netstat -na para ver as conexões, por exemplo uma conexão: Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 128.176.123.45:60471 128.176.123.45:50010 ESTABLISHED

    Qual é a diferença entre os endereços sendo: o ip externo (como agora), o ip de rede local (como 192.168.1.4 ), 127.0.0.1 ? É eth0 usado para os dois primeiros e lo apenas para o último ?

    1. A comunicação para 127.0.0.1 é alcançável somente a partir da própria <<> máquina virtual ?
    2. A comunicação para 192.168.1.4 só é possível a partir do maschine em si e da LAN ?
    3. A comunicação para 128.176.123.45 só é possível a partir da máquina em si, LAN e internet / GAN ?
    4. A interface eth0 é sempre usada, exceto no caso 127.0.0.1 (assim, comunicar-se com 128.176.123.45 para falar com a própria máquina também usa eth0 ) ?
  5. 0.0.0.0 é um curinga ao ligar uma porta, que todas as opções nomeadas podem se conectar a essa porta? Ele está aceitando conexões de todas as interfaces e obtém um endereço local concreto para cada conexão construída?
  6. Quando eu bloquear cada porta, exceto a lo interface com (não tendo outras regras) assim:
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT 
    I pode pingar para 192.168.1.4 para a máquina em si, mas eu definitivamente configurou isso apenas para a interface eth0 ?
por SearchSpace 15.05.2015 / 15:19

1 resposta

3
  1. Sim, essa regra não tem um especificador de interface, portanto aplica-se a todas as interfaces (a menos que houvesse outra regra como -i lo -j RETURN acima).

  2. Não, se você estiver fazendo o roteamento de tráfego, qual interface a conexão está usando pode mudar dinamicamente. (Estritamente falando, ele ainda pode estar vinculado a uma interface específica porque é onde o endereço está, mas o kernel pode estar enviando o tráfego para uma interface diferente, dependendo da tabela de roteamento).

  3. O endereço de origem é o seletor mais comum, mas não o único. Você precisa considerar o banco de dados de diretivas de roteamento (RPDB) ip rule , pois ele pode conter regras muito mais complexas do que simplesmente endereço de origem, incluindo várias tabelas de roteamento.

    3.a. Todo sistema Linux moderno tem pelo menos 3 tabelas de roteamento, começando com ip rule ; geralmente conterá from all lookup $X , em que $X é local , main , default .

    3.b. ip route show table local deve mostrar todas as rotas com um escopo de link ou host. Você verá todos os seus IPs locais aqui.

    3.c. ip route show table main esta é a tabela de roteamento normal que você vê

  4. Se o endereço de destino é local para a máquina (veja a tabela de roteamento local), o kernel irá realmente perceber isso através da tabela, e enviá-lo pela interface de loopback, e NÃO eth0 .

    4.1. Sim

    4.2. Depende do roteamento na rede, se houver DNAT ou outras rotas, pode ser mais acessível do que apenas a LAN.

    4.3. Você diz local + LAN + WAN, o que mais há além disso?

  5. 0.0.0.0 é conhecido como INADDR_ANY e o curinga associa todos os IPs do host a esse endereço.

  6. Veja o que escrevi acima, se o endereço é local, ele passa por loopback pela tabela de roteamento e NÃO via eth0.

por 17.06.2015 / 10:18