Estou tentando testar alguns códigos multicast em uma única máquina. Eu estou tentando obter os pacotes enviados através do dispositivo de loopback (lo) em vez da eth1 padrão. Googling continua aumentando o encantamento
route add -net 224.0.0.0 netmask 240.0.0.0 dev lo
ifconfig lo multicast
mas mesmo depois de fazer isso os pacotes ainda estão saindo pela eth1. Exemplo de código (Python)
#!/usr/bin/env python
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(b'hello world', ('225.100.101.0', 8888))
Saída de tcpdump -i any 'udp port 8888'
:
10:28:28.957679 IP 192.168.1.104.51159 > 225.100.101.0.8888: UDP, length 11
em que 192.168.1.104 é o endereço do host para eth1. Eu sei que posso usar a opção de soquete IP_MULTICAST_IF para forçá-lo (e isso funciona), mas eu preferiria ser capaz de definir a política de roteamento uma vez na máquina, em vez de em cada aplicativo que faz multicast.
Estou executando o Ubuntu 14.04 com o kernel 3.13.0-68-genérico.