我有一台带有至少两个网络接口控制器(NIC)的 manjaro linux 服务器,并且想将发往特定 IP 地址范围或子网的所有流量路由到一个,其他所有流量路由到其他一个。
到目前为止,我已经通过配置了网络nmcli
,但我对这个主题的掌握还不够深入。
理想情况下,解决方案可以通过命令行工作,具有持久性,并且不严重依赖所使用的分布。
编辑:按照使用 nmcli / Centos 7 路由 IP 流量类似于
nmcli connection modify "Wired connection 1" +ipv4.routes "10.0.0.0/16"
应该可以工作,但是包裹似乎没有通过正确的网络进行路由。
答案1
关于此答案的一般预先信息
我认为我的答案一般是基于我对 Debian 系统的知识,但是在这一部分,我跳过了网络管理器部分,因为我无论如何都不会使用它,而且在我个人看来,这只会使它变得复杂。
您问过,并且在评论中似乎几乎清楚,您想将 10.0.0.0/16 路由到另一张网卡。
您提供了“有线连接 1”+ipv4.routes“10.0.0.0/16”
ip address
-- 哪个设备名称应该是正确的,可以通过或找到ifconfig
-- 通常你不确定,拔下卡电缆并查看dmesg
或 /var/log/syslog
因此在我的示例中,假设以下内容:
- “有线连接 1” = eth0
- “10.0.0.0/16”或 10.0.0.0/255.255.0.0(或 10.0.0.0-10.0.255.255)应路由到 eth0
测试或预设的简便方法,不持久:
ip route add 10.0.0.0/16 dev eth0
目前棘手的部分是让它持久。
在基于 RHEL/CentOS/Fedora/Scientific 的系统上,
- 编辑 /etc/sysconfig/network-scripts/route-eth0
在此处添加
10.0.0.0/16 via 10.0.0.1
其中第一个是您要匹配的网络,第二个是路由器的 IP。在我的示例中,为 10.0.0.1
使用 Debian 方式。(Debian 基础系统,如 Ubuntu)
在某些系统上,/etc/network/interfaces 可能看起来是空的。在这种情况下,您必须查看 vi /etc/network/interfaces.d,但我们假设使用基本的 /etc/network/interfaces 文件。
- 编辑 /etc/network/interfaces
查找你的接口 eth0
iface eth0 inet static
address 10.0.0.2
netmask 255.0.0.0
修改,使其看起来像
iface eth0 inet static
address 10.0.0.2
netmask 255.0.0.0
###EITHER with Gateway
#post-up route add -net 10.0.0.0 netmask 255.255.0.0 gw 10.0.0.1 dev eth0
#post-down route del -net 10.0.0.0 netmask 255.255.0.0 gw 10.0.0.1 dev eth0
###or without Gateway
#post-up route add -net 10.0.0.0 netmask 255.255.0.0 dev eth0
#post-down route del -net 10.0.0.0 netmask 255.255.0.0 dev eth0
通用静态方式(在启用 Systemd 的系统上可能已过时)
编辑 /etc/rc.d/rc.local 或 /etc/rc.local
添加
ip route add 10.0.0.0/16 dev eth0
这个答案是为了总体解决这个问题。