使用 netstat 或 route,可能还有其他几个命令,在主路由表中检索默认网关相当简单。(虽然提取它仍然比我预期的要难)但是我还没有找到任何方法来找到每个接口的每个网关。
具体来说,我有 wlan0 和 eth0 接口,每个接口都有自己的标准网关。反正有没有从某个地方提取它们。最好在 C++ 中,用于 Linux 发行版。(具体来说是 Ubuntu 12.04)
编辑:
也许我的术语不正确,所以我将尝试澄清:
- 如果我的笔记本电脑上只有我的 wlan0 接口可操作(即断开局域网电缆)。
- 我有一个默认网关,IP 为 *.*.108.1,本地 IP 为 *.*.108.56。
- 现在,如果我连接以太网电缆,我会得到一个默认网关 *.*.105.129 和 *.*.105.170 的本地 IP。两者的子网掩码都是 255.255.255.128。
我想通过相应地设置我的路由表来使用两者。
也许如果我误解了网关的目的,那么让我解释一下我的主要目标。
我希望能够指定使用无线连接,而不是以太网电缆,反之亦然。
编辑2:
这些是我用来从端口 5555 重定向 UDP 数据包以通过 wlan 发送的路由命令
iptables -A OUTPUT -o wlan0 -t mangle -p udp --sport 5555 -j MARK --set-mark 1
ip rule add fwmark 1 table 1
ip route add dev wlan0 default via *.*.108.1 table 1
对于最后一个命令,我需要提供一些网关,这就是我正在寻找的。