This is a followup to What's the best way to have a 169.254.169.254 address local to my laptop?. Short story: 169.254.169.254 is the well known address of cloud metadata services for EC2 and for OpenStack, and I want to emulate it on my laptop for devel work.Having given up on the lo:0 approach, I decided to just set up NAT/port forwarding. My guests are configured by libvirt, using a default libvirt network which NATs through my wireless nic, which libvirt has configured like so:Chain POSTROUTING (policy ACCEPT)target     prot opt source               destination         MASQUERADE  tcp  --  192.168.77.0/24     !192.168.77.0/24      masq ports: 1024-65535MASQUERADE  udp  --  192.168.77.0/24     !192.168.77.0/24      masq ports: 1024-65535MASQUERADE  all  --  192.168.77.0/24     !192.168.77.0/24    This rule:sudo iptables -t nat -I OUTPUT -p tcp -d 169.254.169.254 --dport 80 -j DNAT --to-destination 127.0.0.1:80does a lovely job of forwarding from Firefox running on the laptop (host OS) itself. But from within the guest, I get No route to host.Clearly I need something else to make this work. What?As requested, some more networking information. I removed the down interfaces from ip addr for brevity.$ ip addr1: 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 forever2: 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 forever4: 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 routedefault via 192.168.1.1 dev wlp3s0  proto static192.168.1.0/24 dev wlp3s0  proto kernel  scope link  src 192.168.1.5192.168.77.0/24 dev virbr1  proto kernel  scope link  src 192.168.77.1$ ip rule0:      from all lookup local32766:  from all lookup main32767:  from all lookup default$ iptables -t nat -L -nChain 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-65535MASQUERADE  udp  --  192.168.77.0/24     !192.168.77.0/24      masq ports: 1024-65535MASQUERADE  all  --  192.168.77.0/24     !192.168.77.0/24    $ iptables -L -nChain 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,ESTABLISHEDACCEPT     all  --  192.168.77.0/24      0.0.0.0/0          Chain OUTPUT (policy ACCEPT)target     prot opt source               destination        
How do I port-forward 169.254.169.254-bound packets from libvirt/KVM guests to localhost?
iptables;libvirtd