I am under the impression that each router interface has its own IP address and subnet mask, both of which are given to them by the ISP.
Se uma interface estiver conectada a algo que seu provedor de serviços de Internet controla, você precisará usar um IP atribuído pelo seu ISP. Se estiver conectado a algo que você controla, você precisará atribuir endereços IP por conta própria.
Tecnicamente, você pode ter um roteador "somente interno" que conecta apenas duas ou mais sub-redes privadas, e o acesso a outras sub-redes não seria possível. Não há exigência estrita de que um roteador distribua o tráfego que não corresponda a nenhuma rota conhecida em sua tabela de roteamento para um gateway padrão.
ETH3 could have the IP: 192.168.1.20/24. This means that the network ID (id of the subnet) is 192.168.1, and thus all servers in the subnet connecting to the ETH3 interface will have IP's of the form 192.168.1.XX. Is all this correct?
Isso também significa que você obtém uma rota "livre" conectada diretamente com base na atribuição de IP / sub-máscara - o roteador sabe que pode alcançar 192.168.1.XX via ETH3, portanto, uma entrada será colocada na tabela de roteamento simplesmente devido a esse fato.
Next, I am a little uncertain as to how a packet is routed from the internet to, say, PC #3.
- O PC # 3 quer falar com facebook.com
- O PC # 3 emite uma pesquisa de DNS e encontra o endereço do facebook.com
- O PC # 3 usa a pilha TCP / IP local para falar com o facebook.com.
- A pilha TCP / IP consulta a tabela de roteamento local para ver se o endereço IP do facebook.com corresponde a qualquer rota.
- Como o PC # 3 é um PC padrão, sua tabela de roteamento provavelmente será bem simples e ficará assim (simplificada):
- 127.0.0.1/8 através da interface virtual localhost
- 192.168.3.0/24 via NIC local.
- O gateway padrão que deve ser o IP do roteador (que deve ser um endereço 192.168.3.XXX/24 na mesma sub-rede que o PC nº 3).
- A pilha TCP / IP tentará encontrar uma rota correspondente e, se nenhuma for encontrada, enviará tráfego para o gateway padrão, se existir. Como o IP do facebook.com não corresponderá a nenhuma dessas rotas, o PC nº 3 enviará o tráfego para o gateway padrão.
- O roteador recebe tráfego em
eth3
. - A pilha TCP / IP do roteador consultará a tabela de roteamento para ver se ela pode encontrar um destino correspondente. Faz o mesmo que o PC faz. A tabela de roteamento do roteador será algo como isto, embora (eu criei endereços para as outras interfaces como um exemplo):
- 192.168.0.0/24 via
eth0
- 192.168.2.0/24 via
eth2
- 192.168.3.0/24 via
eth3
- Gateway padrão via
eth1
- 192.168.0.0/24 via
- A pilha TCP / IP do roteador consulta sua tabela de roteamento para ver se o endereço IP do facebook.com corresponde a qualquer rota e, se nenhuma for encontrada, enviará tráfego para o gateway padrão, se existir. Como o IP do facebook.com não corresponderá a nenhuma dessas rotas, o PC nº 3 enviará o tráfego para o gateway padrão.
-
eth1
terá que ter o NAT configurado, então, nesse ponto, o NAT altera o endereço de origem para parecer que veio deeth1
e lembra esse fato quando recebe uma resposta.
E assim por diante. O mesmo processo acontece no seu provedor de serviços de Internet, no provedor de provedor de serviços de Internet e assim por diante até chegar ao destino.
... I am slightly confused as to why it is necessary for PC#3 to have its own IP address in the first place
Quando o tráfego cruza os roteadores, ele deixa uma rede e entra em outra. O endereço MAC original é perdido quando o tráfego cruza um roteador. IP significa Internetworking Protocol - é um esquema de endereço projetado para permitir que qualquer computador alcance qualquer outro computador globalmente - e se o computador de destino não estiver na mesma rede, uma hierarquia de roteadores deve encaminhar o tráfego para frente e para trás.
Finally, I have a question about the ethernet interfaces. Are ETH0, ETH1, etc. just generic names given to ethernet ports
O esquema ethX
é apenas uma convenção - por padrão, o Linux nomeará o primeiro a ver eth0
, o próximo eth1
e assim por diante. Os nomes são atribuídos por udev
ou systemd
e persistem pelo endereço MAC. O nome pode ser alterado para o que você quiser.