Este é um acompanhamento para Qual é a melhor maneira de ter um endereço 169.254.169.254 local para o meu laptop? . Breve história: 169.254.169.254 é o endereço "bem conhecido" dos serviços de metadados em nuvem para o EC2 e para o OpenStack, e eu quero emulá-lo no meu laptop para o desenvolvimento.
Tendo desistido da abordagem lo:0
, decidi apenas configurar o NAT / port forwarding. Meus convidados são configurados pelo libvirt, usando uma rede padrão libvirt que NATs através do meu wireless nic, que o libvirt configurou assim:
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE tcp -- 192.168.77.0/24 !192.168.77.0/24 masq ports: 1024-65535
MASQUERADE udp -- 192.168.77.0/24 !192.168.77.0/24 masq ports: 1024-65535
MASQUERADE all -- 192.168.77.0/24 !192.168.77.0/24
Esta regra:
sudo iptables -t nat -I OUTPUT -p tcp -d 169.254.169.254 --dport 80 -j DNAT --to-destination 127.0.0.1:80
faz um ótimo trabalho de encaminhamento do Firefox em execução no laptop (host OS) em si. Mas de dentro do convidado, eu recebo No route to host
.
É evidente que preciso de algo mais para fazer isso funcionar. O que?
Conforme solicitado, mais algumas informações de rede. Eu removi as interfaces de ip addr
para brevidade.
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
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
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 60:67:20:44:8d:48 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.5/24 brd 192.168.1.255 scope global wlp3s0
valid_lft forever preferred_lft forever
inet6 fe80::6267:20ff:fe44:8d48/64 scope link
valid_lft forever preferred_lft forever
4: virbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 52:54:00:84:3d:aa brd ff:ff:ff:ff:ff:ff
inet 192.168.77.1/24 brd 192.168.77.255 scope global virbr1
valid_lft forever preferred_lft forever
$ ip route
default via 192.168.1.1 dev wlp3s0 proto static
192.168.1.0/24 dev wlp3s0 proto kernel scope link src 192.168.1.5
192.168.77.0/24 dev virbr1 proto kernel scope link src 192.168.77.1
$ ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
$ iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE tcp -- 192.168.77.0/24 !192.168.77.0/24 masq ports: 1024-65535
MASQUERADE udp -- 192.168.77.0/24 !192.168.77.0/24 masq ports: 1024-65535
MASQUERADE all -- 192.168.77.0/24 !192.168.77.0/24
$ iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 192.168.77.0/24 ctstate RELATED,ESTABLISHED
ACCEPT all -- 192.168.77.0/24 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination