我在使用 ip route add 时遇到了问题。令人惊讶的是,我可以添加路由然后更改它,但无法直接添加它:
# ip route add 192.168.0.0/16 via 192.168.255.254 src 192.168.1.101
RTNETLINK answers: No such process
但:
# ip route add 192.168.0.0/16 dev eth0
# ip route change 192.168.0.0/16 via 192.168.255.254 src 192.168.1.101
我的接口文件是:
iface lo inet loopback
auto eth0
iface eth0 inet static
address 178.xxx.xxx.xxx
netmask 255.255.255.192
network 178.xxx.xxx.xxx
broadcast 178.xxx.xxx.xxx
gateway 178.xxx.xxx.xxx
auto eth0:1
iface eth0:1 inet static
address 192.168.1.101
netmask 255.255.0.0
我必须说我有点迷茫了。我可以接受添加然后更改,但不明白为什么它需要两步而不是直接执行,这让我很不满意。我读了很多手册页,却不明白。
在答案的帮助下进行了更新:
eth0
我现在在和上有一个网关eth0:0
,但因为我想将除 之外的所有流量标记192.168.0.0/16
为来自我的178.xxx.xxx.xxx
地址,所以我添加了一条路由规则。也许使用eth0
ip192.168.1.101
然后将178.xxx.xxx.xxx
ip 放在 上eth0:0
可以在没有路由规则的情况下工作,但情况如下:
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 178.xxx.xxx.131
netmask 255.255.255.192
network 178.xxx.xxx.128
broadcast 178.xxx.xxx.191
gateway 178.xxx.xxx.190
up /sbin/ip route add default via 178.xxx.xxx.190 dev eth0 table 125
up /sbin/ip rule add from 178.xxx.xxx.128/26 table 125
post-down /sbin/ip route del default via 178.xxx.xxx.190 dev eth0 table 125
post-down /sbin/ip rule del from 178.xxx.xxx.128/26 table 125
auto eth0:0
iface eth0:0 inet static
address 192.168.1.101
netmask 255.255.0.0
gateway 192.168.255.254
我还禁用了rp_filter
:
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
感谢您的帮助!
答案1
根据您的接口文件,您已经在网络 192.168.0.0/16 中,因此您不需要该网络的网关。
答案2
如果我根据您的 IP 设置调整结果(我在 192.168.x.0/24 上):
$ sudo ip route 添加 192.168.0.0/16 通过 192.168.255.254 src 192.168.1.101
我明白了
RTNETLINK 回答:没有这样的过程
但
$ sudo ip route 添加 192.168.0.0/16 通过 192.168.1.254 src 192.168.1.101
有效。我怀疑这是因为 192.168.255.254 不在您的本地子网或已知路由中,因此您首先需要一条到它的路由。
答案3
正如其他人所说,eth0:1 上的 IP 为 192.168.1.101/16,这意味着您已经拥有该子网的静态路由。看来您需要为该接口添加一个指向 192.168.255.254 的网关。
答案4
我知道有点晚了,但我还想澄清一下“路线”的用途。你说:
我希望除 192.168.0.0/16 之外的所有流量都标记为来自我的 178.xxx.xxx.xxx 地址
route 命令允许您根据目的地而不是源来确定路由。您需要根据要使用的网关配置服务以使用 IP。正如 Mathias Weidner 所说,您不需要网关,因为您是直接连接的(同一子网 = 无路由)