我正在尝试检查软件在出现网络故障时的行为方式。该软件正在使用tcpsend()并recv()进行通信。
以前,我通过将它们放在 LAN 网络上的 2 台不同机器上来使软件进行通信。因此,为了模拟网络故障,我使用了以下规则。
sudo iptables -A INPUT -p tcp -s 10.100.52.234 -j REJECT --reject-with tcp-reset
Run Code Online (Sandbox Code Playgroud)
让我们假设10.100.52.234是其中一个系统的 IP。这导致一瞬间的失败。一切都很好。
现在,我正在尝试使用 loopback address 在一台机器上模拟这一点127.0.0.1。一切都像以前的设置一样工作,但上面的命令不起作用。它不会使网络连接失败,软件只是挂起。没有发生通信,但也不会失败。
我已经使用了命令
sudo iptables -A INPUT -p tcp -s 127.0.0.1 -j REJECT --reject-with tcp-reset
Run Code Online (Sandbox Code Playgroud)
和
sudo iptables -A INPUT -p tcp -i lo -j REJECT --reject-with tcp-reset
Run Code Online (Sandbox Code Playgroud)
两者都不起作用。该软件需要很长时间才能失败。
是否有不同的方法可以立即使环回地址的连接失败?