因此主机 A(mac OS)有 ip:10.1.10.65主机 B 的 IP 为:10.1.10.68,它是主机 A 上的虚拟机中的 Linux Ubuntu。我想将所有来自主机 A 的流量路由到主机 B。
我目前所做的是在主机 B 上启用了 IP 转发:
sysctl net.ipv4.ip_forward=1
在主机 A 上:
route delete default
route add default 10.1.10.68
完成这些操作后,我可以在主机 A 上正常浏览互联网,但我真的不确定现在是否所有流量都已通过主机 B 路由。我读了一些其他帖子,他们提到iptables -t nat -A POSTROUTING -o ethx -j MASQUERADE
在主机 B 上使用,我没有在主机 B 上使用此命令,但我仍然能够在主机 A 上正常访问互联网。我这里遗漏了什么吗?我如何知道我已正确通过主机 B 路由流量?谢谢。
答案1
互联网上许多人错误地认为他们需要iptables
路由(这是我的一个烦恼)。
您可以使用 检查主机 A 上的路由,它将根据当前规则ip route get a.b.c.d
告诉您 IP 的下一跳在哪里。a.b.c.d
您还可以使用traceroute
、 或mtr
或类似命令来查看数据包所采用的实际路径(只要它们经过的主机未配置为阻止这种情况)。
顺便说一句,route
是旧命令,ip route ...
是新版本,并且新内核的某些路由功能只能通过 访问ip route
。
答案2
在主机 A 上运行 traceroute 8.8.8.8。第一跳将告诉您流量正在经过哪台机器。