iptables --append FORWARD necessário para rotear entre IPs de alias da NIC?

0

Eu tenho uma caixa do ubuntu com uma única placa de rede. Para vincular vários serviços (como apache, dnsmasq, etc), vinculei-os a diferentes aliass (por exemplo, eth0: 0, etc), alguns dos quais em faixas de IP completamente diferentes. Como todos os meus computadores clientes estão usando minha caixa do ubuntu como gateway padrão, fiquei pensando se essa regra do iptables era necessária:

iptables --append FORWARD - na interface eth0: 0 -j ACCEPT (está voltado para os clientes em 10.2.0.0/24, enquanto esta caixa se comunica com meu roteador DSL em 192.168.1.1 / 24). Eu já habilitei o encaminhamento de IP etc.

Basicamente, quero saber se o encaminhamento é necessário entre os aliases que estão em diferentes intervalos de IP (presumo que seja necessário entre várias placas de rede separadas, mas lembre-se de que só tenho uma).

Eu adicionei esta regra iptables para minha interface de saída:

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE

obrigado

Jared

Sgtmullet
fonte

Respostas:

0

Não, estritamente falando, você não precisa disso. Você já deixou claro, presumivelmente permitindo o encaminhamento de IPv4 no sysctl e pela regra MASQUERADE, o que deseja fazer com os pacotes originados na sub-rede 10.2.0.0/24.

Você precisaria da regra se aplicasse uma política muito rigorosa, como tudo o que não é explicitamente permitido, é proibido ou, em outras palavras, se você usar, como sua última regra do iptables,

  iptables -t filter -j DROP

Se você não usar isso, ou se não usar a política DROP, não precisará permitir explicitamente o encaminhamento por meio dessa regra, porque seu kernel já está instruído sobre como proceder. Mas se você está sendo rigoroso e seus pacotes correm o risco de atingir a regra de uma vez, é melhor usá-lo.

BTW, não use aliases de ip, eles estão seriamente obsoletos. Se você já possui o eth0 em funcionamento, o seguinte comando

  ip addr add 10.2.0.1/24 dev eth0

adicionará o novo endereço, em uma sub-rede diferente, à mesma NIC. Você pode ver isso com

  ip addr show

mas não com ifconfig, outra ferramenta obsoleta que você deve abandonar.

MariusMatutiae
fonte
Excelente, realmente aprecio isso! Definitivamente vou começar a usar o endereço IP, nem sabia sobre isso. Apenas um pouco de esclarecimento, porém, configurei o darkstat para capturar estatísticas do eth0: 0 (a interface voltada para os PCs clientes em 10.2.0.0/24). Se eu não usar aliases como estou usando, certamente não serei capaz de fazer isso? Eu preciso capturar isso antes que ele atinja 192.168.1.2 / 24 (roteador voltado para a porta), pois vinculei o squid a isso, o que anonimizará os IPs de origem (eu quero ver o tráfego por IP, por isso estou vinculando-o a eth0: 0. Estou faltando alguma coisa Obrigado pelo seu tempo :)?
Sgtmullet
@Sgtmullet Não estou familiarizado com o darkstat, mas estou familiarizado com o tcpdump e o wireshark, que são apenas sniffers de pacotes, como o darkstat. Nos dois, você pode dar instruções para usar um dispositivo eth0 em um dispositivo, mas restringindo o tráfego ao IP 10.2.0.1. Atrevo-me a supor que deve ser possível fazer o mesmo no darkstat. Em outras palavras, você deve poder selecionar o tráfego não apenas com base na interface, mas também com base no endereço IP de destino.
MariusMatutiae
Faz sentido :) Por fim, esses endereços IP adicionais (adicionados ao adaptador existente) permanecerão lá após a reinicialização? Se for esse o caso, presumo que precisarei removê-los manualmente, caso não sejam mais necessários.
Sgtmullet
Não, eles não estão lá após a reinicialização. você pode adicionar o comando acima ao /etc/rc.local ou, melhor ainda, pode modificar o arquivo / etc / network / interfaces conforme sugerido nesta publicação em um site irmão, serverfault.com/questions/484730/how- esse aliasing funcionou . Além disso, para excluir o endereço em questão, basta emitir o comando: ip addr del 10.2.0.1/32 dev eth0 . Se você tiver uma versão mais antiga do iproute2, o mesmo comando sem 32 .
MariusMatutiae
Acho que se eu o adicionar ao meu / etc / network / interfaces e reiniciar a rede, o RTNETLINK reclama "O arquivo existe". Eu só tenho um único gateway padrão definido, então isso é bastante confuso. Se eu seguir suas etapas exatamente, certamente não deveria estar recebendo um erro ao executar "/etc/init.d/networking restart"?
Sgtmullet