首页 > 系统相关 >linux 路由网关问题

linux 路由网关问题

时间:2023-07-25 10:56:22浏览次数:45  
标签:网关 0.0 route 192.168 网卡 linux 路由

 

 

 

关于linux的默认网关

默认网关是一个用于 TCP/IP 协议的配置项,是一个可直接到达的 IP 路由器的 IP 地址。配置默认网关可以在 IP 路由表中创建一个默认路径。 一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。  一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。默认网关的设定有手动设置和自动设置两种方式。
linux装系统设IP,这应该是系统管理员的基本功,可是不同的网络结构有不同的ip设法。
1.一块网卡的情况
通过命令address,netmask,gateway然后netwok restart。
2.两块网卡的情况
1).一个网关的情况
这种情况也简单,一个网卡设一个ip,其中一个网卡不设置gateway就ok了。这样上网的时候走带网关的那边,这台机器还能和不带网关的那个网络通讯。这种情况在利用linux当路由器或者代理网关的时候比较常见。
2).两个网关的情况
这种情况相对复杂,复杂到两块网卡都不设置默认网关,这种情况发生在这台linux连接的两个网段都不是一个网段,就是通过连接的两个网段还可以访问其它的不同的网段。这种情况下,无论把gateway设到哪边,都会影响到另一个网段所连接的网段不能正常使用。这就是我今天最想表述的问题。在这种情况,如果你想连接多个网段,首先要在正确的网卡上设置正确的ip,剩下的工作就交给route来做了。利用route命令把能上网或者想通过那边上网的网关设置成默认网关,这样就解决了一个网段了。另一个段和它所连接的所有网段。就要一条一个的加路由了。示例:
默认网关:
route add default gw 224.224.224.224 eth0
加路由:
route add -net 192.168.115.0/24 gw 192.168.1.254 eth1
没有学习过路由知识的同学可能不大理解加路由为啥去115段的连接,要走1.254.这是因为,加路由的时候,指定下一跳,只指定和本机连接的那个网关:)
3).三个网卡的情况
和两个网卡类似。如果你的需求是,一个网段通过两个不同的网络上网,中间又夹着这么一个linux的话,个人觉得除了用iptables根据不同的ip地址划分不同的上网网络,似乎没有其它的解决办法。

了解windows下默认网关的配置,请阅读windows下双网卡双网关的设置

 

 

Linux 双网卡配置

linux 支持多网卡,有两种配置方式(以双网卡为例):

环境: 主机运行裁剪的嵌入式 linux,第三方主机为 PC

  1. 双网卡 + 不同网段 系统有两个网卡,分别属于不同的网段(比如网卡 A :192.168.0.11,网卡 B :192.168.1.22),大部分的多网卡系统都是使用的这种配置。这时的路由表基本如此:
  default         XiaoQiang       0.0.0.0         UG    600    0        0 wlo1
  192.168.1.0     *               255.255.255.0   U     100    0        0 eno1

流量根据路由表选择流向不同的网卡。路由器就是这样实现的。

  1. 双网卡 + 同网段 如果两个网卡属于同一个网段(比如网卡 A :192.168.1.11,网卡 B :192.168.1.22)。这时系统的路由表还是有一个默认路由(比如流量都默认流向 wlo1 )。从表面上看,系统此时两个网卡都可以正常通信,但实际上还是有问题的。
    • 假如默认路由为网卡 A ,此时从外界 Ping 192.168.1.11 和 192.168.1.22 都正常,但是如果此时拔掉网卡 A ,然后因为默认路由为 192.168.1.11 ,所以此时外界就不无法 Ping 通主机了,但是此时如果修改了默认路由或者使用 ifconfig 关闭网卡 A ,然后就可以恢复通信了。
    • 两个网卡都在使用时,如果 ping 两个 IP (192.168.1.11 和 192.168.1.22),会发现,如果拔掉了非默认路由的网卡 B(192.168.1.22),再去 ping 192.168.1.22 ,仍然可以通信,并且在第三方主机检查 ARP 表,会发现 192.168.1.11 和 192.168.1.22 的 MAC 地址相同。

出现这种情况的原因就是因为第三方主机和本机通信时会使用默认路由,所以第三方主机 ARP 表上会把网卡 A 和 B 的 MAC 地址标识为网卡 A(默认路由)的 MAC 地址。要解决这个问题可以使用工具 iproute2 把两个网卡分到两个不同路由表。

echo "210    local100" >> /etc/iproute2/rt_tables
echo "220    local200" >> /etc/iproute2/rt_tables

ip route add 192.168.1.0/24 dev wlo0 src 192.168.1.11 table local100
ip route add 192.168.1.0/24 dev eno1 src 192.168.1.22 table local200
ip route add default dev wlo0 table local100
ip route add default dev eno1 table local200

ip rule add from 192.168.1.11 table local100
ip rule add from 192.168.1.22 table local200

ip route flush cache

然后第三方主机再于本机进行通信就会根据不同的 IP 选择了不同的网卡进行通信。此时系统会优先选择 table 数字最小的路由表来进行路由。假如此时拔掉网卡A ,则系统会自动选择网卡 B 作为新的路由出口。

 

 

双网口网卡作用

双网口网卡(Dual Network Interface Card,简称Dual NIC)是指一块网卡上集成了两个独立的网口,可以连接到两个不同的网络。它的作用有以下几个方面:

  1. 实现网络隔离:通过将服务器接入不同的网络,可以实现网络隔离,避免一些安全问题和性能问题。例如,将一台服务器的一个网口连接到公网,另一个网口连接到内网,可以实现外网访问服务器上的服务,同时内网的资源可以不暴露到公网上。

  2. 提高网络性能:通过使用双网口网卡,可以实现负载均衡和冗余备份,提高网络的可用性和性能。例如,将两个网口连接到不同的交换机上,可以实现负载均衡,将网络流量分担到两个网口上,提高网络的吞吐量。

  3. 实现虚拟化网络:通过使用虚拟化技术,可以将一个物理网卡分成多个虚拟网卡,并为每个虚拟网卡分配不同的网络地址。这样,可以实现多个虚拟机之间的互通,同时隔离不同虚拟机的网络流量。

总之,双网口网卡可以实现多种网络应用场景,如负载均衡、冗余备份、网络隔离、虚拟化等。它在服务器、防火墙、路由器等网络设备中广泛应用。

 

 

双网卡一般情况不能有两个网关

 

特别是别设内网网关,这样有段时间过后会出现访问不了外网情况

 

支持两个网关的方法倒是有

 

让双网卡一台电脑拥有两个网关(转)

首先要声明一点,双网卡一台电脑拥有两个网关是不可能的,因为默认网关(default gateway)只能是一个。

给服务器安装两块网卡,分别设置不同的ip和网关(内网和外网),外网的通过外网网卡来访问,内网的通过内网网卡来访问,似乎实现起来很简单,但事实上很难啊,因为默认网关(default gateway)只能是一个!

解决的办法就是:

1、将其中一块网卡(如外网)设置默认网关;

2、手工加上一条静态路由,让另一个网段(内网)的数据经过第二个网卡。使用route命令,命令的范例如下,希望能帮某些同志一点小忙。

参考命令:

范例1、route add -p 10.0.0.0 mask 255.255.255.0 10.40.4.200(让对10.0.0.1的访问走10.40.4.200的网卡,mask 后面是子网掩码)

范例2、route add -p 10.0.0.0 mask 255.0.0.0 10.40.4.200

范例3、route add -p 0.0.0.0 mask 0.0.0.0 10.40.4.200(不用说了吧,让所有的访问走10.40.4.200)

说明:

1、加上-p参数,加入的路由为永久路由,不会因为电脑重新启动而被初始化。10.40.4.200是我的电脑网卡IP。 输入route 可以得到更多的帮助。

2、如果你的电脑已经有两个网关(如使用了SoftEther),用route print可以看到两条0.0.0.0的路由,可以先删除0.0.0.0的路由,然后重新添加。

route delete 0.0.0.0         “删除所有0.0.0.0的路由”

 

附:在网络上找资料时,常常看到有人在问类似的问题,可以看出大家对路由方面的知识很陌生。于是提供以下资料,供大家参考:

1、《解读route命令》http://www.kpcn.org/news/Read.asp?NewsID=8527
2、《学习Windows网络命令之route命令小档案》http://www.kpcn.org/news/Read.asp?NewsID=8528

 

========= 以下是另一篇文章的内容 ============

经常遇到一台计算机要同时访问两个网络(一个是互联网,一个是企业内部网)的要求。以本单位为例:地址是虚构的^_^
机器有两块网卡,接到两台交换机上
internet地址:218.22.123.123,子网掩码:255.255.255.0,网关:218.22.123.254
企业内部网地址:10.128.123.123,子网掩码:255.255.255.0,网关:10.128.123.254
如果按正常的设置方法设置每块网卡的ip地址和网关,再cmd下使用route print查看时会看到
Network Destination Netmask Gateway Interface Metric
0.0.0.0  0.0.0.0  218.22.123.254  218.22.123.123  20
0.0.0.0  0.0.0.0  10.128.123.254  10.128.123.123  1
即指向0.0.0.0的有两个网关,这样就会出现路由冲突,两个网络都不能访问。要实现同时访问两个网络就要用到route命令
第一步:route delete 0.0.0.0          ”删除所有 0.0.0.0 的路由"
第二步:route add 0.0.0.0 mask 0.0.0.0  218.22.123.254          "添加 0.0.0.0 网络路由"
第三步:route add 10.0.0.0 mask 255.0.0.0  10.128.123.254    "添加 10.0.0.0 网络路由"
这时就可以同时访问两个网络了,但碰到一个问题,使用上述命令添加的路由在系统重新启动后会自动丢失,怎样保存现有的路由表呢?
在win2000 下可以使用route add -p 添加静态路由,即重启后,路由不会丢失。注意使用前要在tcp/ip设置里去掉接在企业内部网的网卡的网关。

 

============= Linux下双网卡双网关配置路由表 =============

http://hi.baidu.com/xibeihuohu/blog/item/a54d27fd18b8bf1f08244d1a.html

由于电信和网通之间互联互通的问题,很多人选择双线路机房, 所谓双线路机房就是拥有两条出口,一条电信一条网通。最近在一个双线路机房测试一台服务器,打算作为论坛的数据库服务器使用,服务器操作系统为 Linux。计划配置为双IP,双域名,使得浏览者通过电信和网通两条线路都能正常访问服务器,而且各走各的,互不影响。在配置网络的时候遇到了问题,由 于Linux默认只有一个网关,在网络上查询了很久,找到一个解决方案,因此整理了一下。感谢原文作者jac003ke。

服务器操作系统RedHat linux 9,设置两张路由表
1. vi /etc/iproute2/rt_tables,增加网通和电信两个路由表
251 tel   电信路由表
252 cnc 网通路由表

2. 给网卡绑定两个地址用于电信和网通两个线路
ip addr add 192.168.0.2/24 dev eth0
ip addr add 10.0.0.2/24 dev eth1

3、分别设置电信和网通的路由表

电信路由表:
#确保找到本地子网
ip route add 192.168.0..0/24 via 192.168.0.2 dev eth0 table tel
#内部回环网络
ip route add 127.0.0.0/8 dev lo table tel
#192.168.0.1为电信网络默认网关地址
ip route add default via 192.168.0.1 dev eth0 table tel

网通线路路由表:
#确保找到本地子网
ip route add 10.0.0.0/24 via 10.0.0.2 dev eth1 table cnc
#内部回环网络
ip route add 127.0.0.0/8 dev lo table cnc
#10.0.0.1是网通的默认网关
ip route add default via 10.0.0.1 dev eth1 table cnc

4、电信和网通各有自己的路由表,制定策略,让192.168.0.2的回应数据包走电信的路由表路由,10.0.0.2的回应数据包走网通的路由表路由
ip rule add from 192.168.0.1 table tel
ip rule add from 10.0.0.1 table cnc

   

 

 

参考:

https://www.eumz.com/2012-05/248.html

https://www.eumz.com/2012-05/251.html

https://oska874.github.io/%E9%97%AE%E9%A2%98/Linux%E5%8F%8C%E7%BD%91%E5%8D%A1%E9%85%8D%E7%BD%AE.html

https://juejin.cn/s/%E5%8F%8C%E7%BD%91%E5%8F%A3%E7%BD%91%E5%8D%A1%E4%BD%9C%E7%94%A8

https://www.cnblogs.com/visionfeng/p/5825078.html

 

标签:网关,0.0,route,192.168,网卡,linux,路由
From: https://www.cnblogs.com/rebrobot/p/17579198.html

相关文章

  • Linux必备技能-vim编辑器深入讲解(9)
    vim编辑器我们说过vim是文本编辑器,什么是文本编辑器呢?简单来讲我们从名字上就能知道它能实现编辑文本的,但这里我们要强调一个概念文本,这里的文本指的是纯文本信息。所谓纯文本站在ASCII的角度来讲,它指的是必须是纯粹的不加任何修饰的文本信息。比如我们此前都接触过的字处理工......
  • Linux驱动:I2C驱动
    一、前言I2C协议是在开发中使用非常频繁的一种协议,相信大家在学习单片机的时候经常会用到支持I2C协议的模块,I2C总线仅仅使用SCL、SDA这两根信号线就实现了设备之间的数据交互,极大地简化了对硬件资源和PCB板布线空间的占用。因此,I2C总线被非常广泛地应用在EEPROM、实时钟、......
  • linux I2C驱动
    1.linuxIIC驱动由于裸机的驱动迎合驱动的分离和分层的思想,分为IIC主机驱动(接口驱动)和IIC设备驱动.这种思想的好处,请看我写的另外一篇文章Linux驱动的分离和分层。其中上面说的裸机驱动请看这篇文章裸机驱动但是裸机的驱动是没有加入操作系统的本文也是遵循Linux驱动的分离和......
  • 4 STM32MP1 Linux系统启动过程
    1.ROM代码  这是ST官方写的代码,在STM32MP1出厂时就已经烧录进去,不能被修改。ROM代码是上电以后首先执行的程序,它的主要工作就是读取STM32MP1的BOOT引脚电平,然后根据电平来判断当前启动设备,最后从选定的启动设备里面读取FSBL代码,将FSBL代码放在对应的RAM空间。  STM32MP1启......
  • 一分钟学一个 Linux 命令 - rm
    前言大家好,我是god23bin,欢迎回到咱们的《一分钟学一个Linux命令》系列,今天我要讲的是一个比较危险的命令,rm命令,没错,你可以没听过rm命令,但是删库跑路你不可能没听过吧?什么?没听过,没事,现在你就听过了,我刚刚已经讲了,哈哈哈。好了,废话不多说,现在开始吧!什么是rm?rm是单词rem......
  • linux 中 grep命令精准匹配制表符
     001、[root@PC1test02]#lsa.txt[root@PC1test02]#cata.txt##测试数据321971225792194632197622553381184532197222609449473219872253144109......
  • Linux那些查看或统计网卡流量的几种方式
    iftop是类似于top的实时流量监控工具,主要用来显示本机网络流量情况以及各个相互通信的流量集合,可以用来监控网卡的实时流量。 iftop的输出从整体上可以分为三大部分:iftop输出中最上面的一行,此行信息是流量刻度,用于显示网卡带宽流量。iftop输出中最大的一个部分,此部分又分......
  • 适用于Android手机的Debian GNU/Linux和Windows兼容环境
    Github地址:https://github.com/jinshulumengchuang/Debian-Wine-Android食用方法:从github下载release安装得到的apk文件把tarball放在内部存储的根目录给termux存储权限打开termux输入:cd..;tarxvf/sdcard/rootfs.tar.xz回车等候指令执行完成.($符号重新出现)......
  • linux下载安装fastdfs和fastdfs与nginx整合、springboot访问fastdfs
    文章目录需求分析分布式文件系统1FastDFS安装FastDFS和nginx整合2.整合java访问fastdfs服务文件上传查询下载测试整合springboot需求分析搭建fastDFS文件服务器1)安装fastDFStracker和storage2)在storageserver上安装nginx在storageserver上安装nginx的目的是对外通过http访问......
  • 关于菜鸡学习RHEL8的一些小笔记--->linux上的ssh远程
    远程:*在日常使用中,windows系统可以使用远程桌面来管理远程的windows操作系统*而在Linux上,可以使用openssh套件来进行管理(默认安装)在openssh上是使用安全加密的套接字通信方式openssh:openssh是一个典型的C/S架构,同时拥有openssh-clent客户端以及openssh-server服务端,如下所示:通过ssh......