传统情况下,如果是为了从内向外访问获得更好的速度,让访问电信走电信,访问网通走网通,那么配置是网关只能够配置一个。
比如以电信为主的,那么网关就只设置电信的1.1.1.254,而针对网通和教育网设置不同的路由,路由下一跳指向网通和教育网对应的 网关。
如果这样做的目的只是实现内部访问外面,那么是没问题了,但是如果是为了让外面的用户能够正常访问到服务器上的服务就会出问题。比如电信用户会无法访问网通和教育网的ip,网通用户会无法访问电信和教育网的ip。而且只有设置了默认路由的那个网络能被跨网络访问,其它两个网络只能被本子网的设备访问。
要解决这个问题,思路就是由哪个网口进来的流量希望全部就由哪个回去。用lartc里面提到的方法就是来源的口不同,走不同的路由表。在默认的路由表基础上再建立三个路由表。
用 ip route show 可以看到默认有local,main,default三个路由表,这三个路由表的名称命名来自 /etc/iproute2/rt_tables ,这里先在这个配置文件里面添加三个不同的路由表表名,
之后建立这三个路由表的内容,因为这三个路由表的只是用来响应来自不同接口的,而不是用来相应从哪个接口出去的,所以只需要每个路由表里面建立默认网关即可。
之后再加上三条规则,使来自不同的口的走不同的路由表
至此无论是电信还是网通还是教育网用户,访问三个ip的任意一个地址都能够连通了。即便是服务器上本身的默认路由都没有设置,也能够让外面的用户正常访问。三个网络的IP都能被跨网络访问了。
命令汇总:
实现648 Android 6.0端与410 Linux端通过Switch通信
1. 虚拟网卡配置
648中延用638中方法在有线网络接口eth0上创建虚拟网卡eth0.1并设置ip 10.66.1.3用以与410地址10.66.1.2通信。
配置结果可通过命令“ifconfig”查看:
并且配置完成后,系统路由表中会自动多出一条路由:
2. Android M 多网络共存
经过步骤一的配置之后在638 Android 4.4系统上即可与410建立通信;但在648 Android 6.0上是不通的。此问题查询了很长时间终于有了解决方案,且听我细细道来。
Android4.4只使用了一张路由表,使用busybox route就可以完成路由表的设置,从Android5.0之后,考虑要对多网络的支持,采用了多路由表。Android 5.0(LOLLIPOP)以上,在同一时间下,Android系统可以允许多网络类型连接,而且并不是简单的网络共存,而是每个网络有一套自己的dns,网关,路由表。比如eth0,wlan0分别有自己独立的一套。应用层在建立socket连接的时候,可以自由选择使用那套网络;在这样子的前提下,你就可以选择究竟采用那种网络来完成你的请求。这里还涉及到另一个新的概念不同网络的标识netid,应用层可通过绑定指定的netid来设置该应用走指定的网络,但此处暂不赘述有兴趣可自己了解。在Android 5.0(LOLLIPOP)之前,在同一时间下,Android系统只能允许一种网络类型连接。之后在多网络的情况下,系统是如何选择的呢?这就需要引入一个关键名词“策略路由”。
策略路由在linux中已经存在很久,但是Android5.0开始才真正将其作用发挥出来。策略路由区别于一般的路由就在于,一般的路由是以目的地址作为识别与区分的标识,例如下面这个路由表,它表示所有目的地址为192.168.7.0/24的数据包都直接从eth0发出
当面对比较复杂的情况时,这种基于目的地址的路由,就很受局限。例如:有两个网卡eth0, eth1,希望所有http上网数据从eth0出去,FTP数据从eth1出去。这种情况就必须要策略路由才能处理。
策略路由的基本命令:
648上策略路由信息:
各部分解释
整行的意思就是,如果一个数据包符合规则(源地址、目的地址、协议、端口、数据包大小、内容等),则使用指定路由表。
系统最多支持255个路由表:
在默认情况下进行路由时,首先会根据规则0在本地路由表里寻找路由,如果目的地址是本网络,或是广播地址的话,在这里就可以找到合适的路由;从这个路由规则中可以看到, 路由表 local优先,然后是netid 对应 0x10064 的走 eth0 路由表,对应 0x10066 走 eth0 路由表。而通常情况下访问网络时没有设置 netid,默认就使用 22000: from all fwmark 0x0/0xffff lookup eth0 这个,即 eth0 路由表。
有了策略路由,就可以保证当多网卡存在是,每个网卡有自己的路由表,为多网卡共存提供路由基础。上层应用,可以选择要经过的路由。
此处没有走eth0.1到10.66.1.2的路由策略,需添加:
3. Linux 路由与策略路由
Linux是在内核2.1开始采用策略性路由机制的。策略性路由机制与传统的路由算法相比主要是引入了上面的多路由表以及规则的概念。
要配置一个策略路由有2步:
1、在自定义路由表中添加要走的路由 ip route add xxx table table_num
2、增加策略,使得符合该策略的流量走第一步所定义的路由表 ip rule add 策略 【table tablenum 或 动作】。
传统的linux路由是由一张路由表去保存网络链路上的路由信息的。新的linux策略路由的理念是使用多张路由表去保存路由信息。何为策略路由呢,就是为不用的数据包制定不同的路由策略,即在IP路选时走不同的路由。
在策略路由机制中,可以支持多张路由表,最多可支持255张表。其中4张是内置路由表,如下:
策略路由的作用
1 基于源地址选路( Source-Sensitive Routing)
2 根据服务级别选路( Quality of Service)
3 节省费用的应用
4 负载平衡(Load Sharing)
一、ifconfig自ubuntu17起,已经不提供这个命令了,要自动安装
sudo apt install net-tools
ifconfig -a :查看当前系统所有的网络接口
ifconfig interface(PS:这里是网络接口的名称) down:禁用当前网络接口
ifconfig interface up :启用网络接口
二、ip命令
1、管理网络接口
1)、ip link list 显示网络设备的运行状态
2)、ip -s link list 显示更详细的网络设备运行状态
4)、ip link set dev ens33 mtu 1600: 改变网络设备最大传输单元 MTU的值为1600
2、管理ip地址
1)、ip a show dev ens33 显示指定网络接口的ip
2)、ip addr ls ens33
5)、ip -4 addr flush ens33
通过id修改的ip地址重启后会消失。如果要永久保存,则需要修改配置文件
3、管理路由表
1)、ip route show 显示main 路由表的路由信息
每行定义一个路由表,前面的数字为路由编号,后面为路由名称
以上的几个路由表为默认路由表,用户不可以修改
默认所有的路由表都会被插入到254的main表中。在进行路由查询时,内核只使用路由表main
3)、ip route show table local 指定显示路由表
4、管理策略路由
1)、ip route list 列出当前系统的策略路由规则
2、添加一条到达网络224.0.0.0/28的路由
route add -net 224.0.0.0/28 netmask 224.0.0.0 dev docker0
3、删除指定的路由记录224.0.0.0
route del -net 224.0.0.0 netmask 224.0.0.0
route -n 查看路由
5、删除默认网关
route del default gw 172.17.0.0 dev docker0
route -n
四、netstat命令
1、netstat(network status) 查看各种网络信息的,包括网络连接、路由表以及网络接口的各种统计数据
netstat [options]
常用的几个选项:
-a :显示所有处于活动状态的套接字
-t :显示TCP/IP协议的连接信息
-l:列出所有处于监听状态的套接字
-n:直接显示ip地址,不转换成域名
-i :列出所有的网络接口
-p:显示使用套接字的进程id和程序名
-r:显示路由表信息
2、netstat -a
显示所有的端口,包含未监听的和监听的
3、nestat -at
只显示TCP/IP协议的连接
4、netstat -tl
只显示处于监听状态的TCP连接
5、netstat -tlanx
显示数字形式的ip地址
6、netstat -anp | grep ":80"
排查处于某个端口被占用导致服务器无法启动
7、netstat -i
列出当前系统的所有网络接口
8、netstat -r
查看路由表信息
该命令是向某台主机( www.baidu.com )发送ICMP数据包,并接收响应
Ctrl+C退出ping 命令
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)