linux 路由表怎么配置让ip1 访问 ip2 走网卡

本机2个ip,linux 路由表怎么配置让ip1 访问 ip2 走网卡,而不是走回环。且不影响上网?
我试了下,本机路由表(local)里面,删除对应的规则,还是不行
两ip都是拨号得到的动态公网啊,访问它机都没问题
ip ro ls table local: 有下面的数据

local 3.3.3.3 dev p_p_p0 proto kernel scope host src 3.3.3.3
local 4.4.4.4 dev p_p_p1 proto kernel scope host src 4.4.4.4

ip ro ls table main 表里有

default dev p_p_p0 src 3.3.3.3 metric 10
default dev p_p_p1 src 4.4.4.4 metric 13
4.4.4.1 dev p_p_p1 proto kernel scope link src 4.4.4.4
3.3.3.1 dev p_p_p0 proto kernel scope link src 3.3.3.3

4.4.4.1 和 3.3.3.1是网关
ping 4.4.4.4 -I p_p_p0 不通
目前还没解决这问题(7-22 22:00)
我试着把local表里面的删除,连外网都上不了。
试过 ip ro add 4.4.4.4/32 via 3.3.3.1 dev p_p_p0 还是不行。各位想想招啊

设置静态路由试一试,配置完用traceroute检查是否正确流通到网卡

ip route add 对应IP/32 网卡设备 eth0
比如 ip route add 192.168.2.100/32 dev eth0



设置路由,根据访问的ip地址来确定走哪个网卡。route add

参考 https://blog.csdn.net/weixin_53946852/article/details/125626246

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/12064
  • 你也可以参考下这篇文章:局域网如何共享文件?计算机1通过ip访问计算机2,拿取共享文件。
  • 除此之外, 这篇博客: 华为笔试题:根据子网掩码判断两个IP地址是否在同一子网,并输出IP1的网络号中的 问题描述 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 输入两个IP地址和合法的子网掩码,如
    192.168.1.1 192.168.1.2 255.255.255.0
    输出结果1表示IP1,IP2在同一子网,并输出IP1的网络号
    1 192.168.1.0
    192.168.21.156 192.168.45.148 255.255.255.128
    0表示IP1,IP2不在同一子网并输出IP1的网络号
    0 192.168.21.128
    判断IP和IP2是否为同一个子网我的思路是
    1、将三部分地址按空格截取(string.spilt(" “));
    2、将每个地址按(”\.")截取;
    3、将每部分转换为二进制连接成完整的IP地址二进制字符串。另外 两个也执行同样的操作;
    4、将子网掩码的1的部分统计数量
    5、根据子网掩码的结构截取IP1、IP2的有效部分,并判断是否相同,从而判断IP和IP2是否在同一个字段
    输出IP1的网络号我的思路是:
    1、将刚才截取的IP1的部分补全为32位;
    2、将1中补全的字符串按每八位截取;
    3、按将每部分取字符(1或0)根据位置变为十进制,并累加为256进制的标准IP;
    4、将四部分用点字符串连接输出;

Linux双网卡配置双重IP(Linux配置两个ip)
可以参考下


https://www.dbs724.com/157499.html

您好!公网两IP之间的访问都必须通过你公司的公网网关,你两个公网IP的主机网卡配置里面分别加一个内网IP就可以。

img

添加路由规则:使用ip route add命令添加一个通过网关访问IP2的路由规则。假设IP1为3.3.3.3,IP2为4.4.4.4,网关为3.3.3.1,网卡为[网卡名]。命令如下:

ip route add 4.4.4.4/32 via 3.3.3.1 dev [网卡名]
删除本地回环规则:使用ip route del命令删除本地回环规则,使IP1不再通过回环接口访问自身。命令如下:

ip route del 3.3.3.3/32
验证设置:通过ping命令验证是否可以通过p_p_p0网卡访问IP2。使用以下命令:

ping 4.4.4.4 -I [网卡名]

检查是否已设置默认路由指向正确的网关。

ip route add default via 3.3.3.1 dev p_p_p0 src 3.3.3.3 table main  
ip route add default via 4.4.4.1 dev p_p_p1 src 4.4.4.4 table main

其次,检查下是否已将需要访问的IP添加到自定义路由表中。

试试Linux系统启用了IP转发

设置一下默认路由
ip route add default via 网关 dev 网卡 src 本地IP地址

基于bing、GPT部分内容和本人思考总结:
您可以尝试进行以下步骤来配置Linux路由表,使得IP1通过网卡访问IP2而不经过回环,并保持互联网连接:

首先,确保您已经删除了路由表中本地回环的规则,这是正确的操作。

检查您的网络设置,确保IP1和IP2在同一个子网中,并且网卡已经正确配置。

检查您的默认路由设置,确保默认路由没有指向回环地址。您可以使用ip route show命令查看路由表。

添加具体的路由规则,将IP1的流量指向IP2所在的网卡。例如,可以使用以下命令添加路由规则:

php
复制代码
ip route add <IP1>/32 dev <网卡名称>

运行ip route show命令确认新的路由规则已经添加到路由表中。

请注意,这些步骤可能因您的具体环境和网络设置而有所不同。如果以上步骤无法解决您的问题,建议您查阅Linux的官方文档或咨询网络管理员以获取更详细的帮助。

在不同的 Linux 系统版本中,配置路由表以使 IP1 访问 IP2 走网卡的方法可能略有不同。以下是在一些常见的 Linux 系统上配置的示例方法:

Debian / Ubuntu / Linux Mint:
编辑 /etc/network/interfaces 文件并添加以下内容:

bash
Copy Code
auto eth0:0
iface eth0:0 inet static
address [IP1地址]
netmask [子网掩码]
gateway [网关IP]

post-up route add -host [IP2地址] dev eth0:0[IP1地址] 替换为您第一个 IP 的地址,[子网掩码] 替换为适当的子网掩码,[网关IP] 替换为适当的网关 IP 地址,[IP2地址] 替换为您要访问的 IP2 地址。

保存文件并退出编辑器。然后重新启动网络服务:

bash
Copy Code
sudo systemctl restart networking
CentOS / Red Hat / Fedora:
使用 nmcli 命令配置网络接口和路由表。

首先,使用以下命令创建逻辑接口(例如 eth0:0):

bash
Copy Code
sudo nmcli con add type ethernet ifname eth0 con-name eth0:0
然后,设置 IP1 地址、子网掩码和网关 IPbash
Copy Code
sudo nmcli con mod eth0:0 ipv4.addresses [IP1地址]/[子网掩码] ipv4.gateway [网关IP]
最后,添加路由规则以让 IP1 访问 IP2bash
Copy Code
sudo ip route add [IP2地址] via [网关IP] dev eth0:0[IP2地址] 替换为您要访问的 IP2 地址,[网关IP] 替换为适当的网关 IP 地址。

重新启动网络服务:

bash
Copy Code
sudo systemctl restart NetworkManager
请注意,这只是在一些常见的 Linux 系统上的示例方法。具体配置可能因不同的版本和发行版而有所不同。如果遇到问题,请参考您所使用的 Linux 版本的文档或社区支持。另外,请在进行任何更改之前备份您的路由表,并小心测试以确保网络连接正常工作。

引用gpt,供你参考:
要让ip1访问ip2走特定的网卡,你需要配置一条自定义路由规则。在Linux中,你可以使用ip命令来添加路由规则。

假设你想让ip1(3.3.3.3)访问ip2(4.4.4.4)走p_p_p0网卡,你可以执行以下命令:

sudo ip route add 4.4.4.4/32 via 4.4.4.1 dev p_p_p0

这条命令的意思是添加一条目标地址为4.4.4.4,目标子网掩码为32(即单个IP地址)的路由规则,下一跳为4.4.4.1,出接口为p_p_p0。

这样配置后,当你从ip1访问ip2时,数据包将会通过p_p_p0网卡发送出去。

需要注意的是,为了确保不影响上网,请确保默认路由仍然存在。你可以使用以下命令来检查默认路由:

ip route show default

如果你看到如下输出:

default via dev

其中是你的网关IP地址,是默认出接口(通常是你上网的网卡),那么你的上网路由仍然存在。如果你看不到该输出,请使用以下命令重新添加默认路由:

sudo ip route add default via dev

记得将和替换为你实际使用的值。

希望这可以解决你的问题。

来自GPT,供你参考:
根据您提供的路由表信息,配置上看起来是正确的。但是因为IP1和IP2都是动态公网IP,可能受到了网络运营商的限制,使得无法通过本地路由表来直接配置流量的转发。

在这种情况下,您可以尝试使用网络地址转换(NAT)来实现IP1访问IP2,并确保不影响其他网络连接。以下是一个可能的解决方案:

启用网络地址转换(NAT)功能:

sudo iptables -t nat -A POSTROUTING -o -j MASQUERADE
其中 是您用于上网的默认网络接口。

添加一条端口转发规则:

sudo iptables -t nat -A PREROUTING -p tcp --dport -i -j DNAT --to-destination :
其中 是目标端口号, 是您的 IP2 地址。

注意:请将 和 替换为实际的值。

保存iptables规则以便重启后生效:

sudo iptables-save > /etc/iptables/rules.v4
尝试使用IP1访问IP2的目标端口。

请注意,上述步骤是基于使用iptables进行网络地址转换(NAT)的常见做法。但是由于您的网络环境可能有其他限制或配置,无法保证一定可以解决问题。如果遇到问题,请考虑咨询网络管理员或专业人士以获取进一步的帮助。