こちらに書いてある方法(iptablesの設定)で、kvmのホストのport80へのアクセスを作成したvm(nicはNATインターフェイス)へポートフォワードするようにしたところ、vmから外部のport80にアクセスできなくなってしまいました。少々ハマったので、メモを残します。
tcpdumpで調査したところvmからホストへパケットを送った直後にvmからvm自身のport80へアクセスしていることがわかりました。ちなみにtcpdumpの出力は以下のようになっていました。
09:34:15.349189 IP 192.168.122.94.37835 > vagrant.domain: 20841+ A? google.com. (28)
09:34:15.349244 IP 192.168.122.94.37835 > vagrant.domain: 4542+ AAAA? google.com. (28)
09:34:15.349378 IP vagrant.domain > 192.168.122.94.37835: 4542 1/0/0 AAAA 2404:6800:400a:80e::200e (56)
09:34:15.449257 IP vagrant.domain > 192.168.122.94.37835: 20841 1/0/0 A 142.250.76.142 (44)
09:34:15.462124 IP 192.168.122.94.48118 > kix07s06-in-f14.1e100.net.http: Flags [S], seq 1210295464, win 29200, options [mss 1460,sackOK,TS val 272966 ecr 0,nop,wscale 7], length 0
09:34:15.462182 IP 192.168.122.94.48118 > 192.168.122.94.http: Flags [S], seq 1210295464, win 29200, options [mss 1460,sackOK,TS val 272966 ecr 0,nop,wscale 7], length 0
09:34:16.463086 IP 192.168.122.94.48118 > kix07s06-in-f14.1e100.net.http: Flags [S], seq 1210295464, win 29200, options [mss 1460,sackOK,TS val 273968 ecr 0,nop,wscale 7], length 0
09:34:16.463141 IP 192.168.122.94.48118 > 192.168.122.94.http: Flags [S], seq 1210295464, win 29200, options [mss 1460,sackOK,TS val 273968 ecr 0,nop,wscale 7], length 0
5行目でvm(192.168.122.94)からgoogle.com:80へアクセスしようとホストにパケットを投げていますが、その直後に自分自身に対して同じパケットを投げてます。
どうやら、前述したiptablesの設定によって、vmからhostに送られたパケットがそのままvmにフォワードされてしまっていたようです。正直、設定内容のどこをどう直せばよいかわからなかったので、とりあえずホストのport80ではなくport20080をvmにポートフォワードするように変更したところ、この問題は解消しました。