太阳城集团官方网站瑞士 2008 欧洲杯

 澳门十大赌博靠谱网站平台澳门十大赌博靠谱网站平台

本文转载自微信公众号「招引内功修王人」,作家张彦飞allen。转载本文请斟酌招引内功修王人公众号。

世界好,我是飞哥。

容器是一种新的假造化技艺,每一个容器都是一个逻辑上寂寞的辘集环境。Linux 上提供了软件假造出来的二层交换机 Bridge 不错治理归拢个宿主机上多个容器之间互连的问题,但这是不够的。二层交换无法治理容器和宿主机外部辘集的互通。

容器详情是需要和宿主机除外的外部辘集互通才具备实用价值的。比如在 Kubernets 中,就条款扫数的 pod 之间都不错互通。非常于在原先物理机所构成的辘集之上,要再建一个互通的假造辘集出来。这即是 Overlay 辘集的主见,用一个简便的示例图示意如下。

回念念在传统物理物理辘集合,不同子网之间的劳动器是若何互联起来的呢,没错,即是在三层职责的路由器,也叫网关。路由器使得数据包不错从一个子网中传输到另一个子网中,进而完了更大领域的辘集互通。如下图所示,一台路由器将 192.168.0.x 和 192.168.1.x 两个子网相连了起来。

最近某知名博彩网站,关于欧洲杯赌博热门话题,赌德国队夺冠,有人则看好英格兰队,还有瞄准巴西队,赌博一门风险高行业,一门能够人们赛场感受激情活动。

在容器假造化辘集合,当然也需要这样一个脚色,将容器和宿主机除外的辘集相连起来。其实 Linux 天生就具备路由的功能,仅仅在云原生时期,它的路由功能再一次找到了用武之地。在容器和外部辘集通讯的历程中,Linux 就又承担起路由器的脚色,完了容器数据包的正确转发和送达。

在多样基于容器的云原生技艺盛行的今天,再次回头潜入相识路由职责旨趣显得相等有必要,而况也相等的有价值。今天,咱们就再来强化一下 Linux 上的路由学问!

一、什么时辰需要路由

先来聊聊 Linux 在什么情况下需要路由历程。其果然发送数据时和罗致数据时都会触及到路由选择,为什么?咱们挨个来看。

1.1 发送数据时选路

Linux 之是以在发送数据包的时辰需要进行路由选择,这是因为劳动器上是可能会有多张网卡耕种存在的。数据包在发送的时辰,一齐通过用户态、TCP 层到了 IP 层的时辰,就要进行路由选择,以决定使用哪张网卡耕种把数据包送出去。详备历程参见25 张图,一万字,拆解 Linux 辘集包发送历程

风尚

来粗略过一下路由斟酌源码源码。辘集层发送的进口函数是 ip_queue_xmit。

//file: net/ipv4/ip_output.c int ip_queue_xmit(struct sk_buff *skb, struct flowi *fl) {  // 路由选择历程  // 选择完跋文录路由信息到 skb 上  rt = (struct rtable *)__sk_dst_check(sk, 0);  if (rt == NULL) {   // 莫得缓存则查找路由项   rt = ip_route_output_ports(...);   sk_setup_caps(sk, &rt->dst);  }  skb_dst_set_noref(skb, &rt->dst);  ...  //发送  ip_local_out(skb); } 

在 ip_queue_xmit 里咱们伊始就看到了路由项查找, ip_route_output_ports 这个函数中完成路由选择。路由选择即是到路由表中进行匹配,然后决定使用哪个网卡发送出去。

Linux 中最多不错有 255 张路由表,其中默许情况下有 local 和 main 两张。使用 ip 高歌不错张望路由表的具体竖立。拿 local 路由表来例如。

#ip route list table local local 10.143.x.y dev eth0 proto kernel scope host src 10.143.x.y local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 
1.2 罗致数据时选路

没错,罗致数据包的时辰也需要进行路由选择。这是因为 Linux 可能会像路由器相通职责,将收到的数据包通过合适的网卡将其转发出去。

皇冠hg86a

Linux 在 IP 层的罗致进口 ip_rcv 履行后调用到 ip_rcv_finish。在这里张开路由选择。要是发现如实即是本耕种的辘集包,那么就通过 ip_local_deliver 送到更表层的 TCP 层进行处理。

今年的活动首次采用“1+4”市区主分场模式,持续开展5场进社区活动,即在昌平回天地区举办市级主场活动,在朝阳、丰台、门头沟、延庆4个区分别于8、9、10月组织区级分场活动。聚焦市民群众关注的旅游热点,推出面对面的公共惠民服务,不断满足市民群众对旅游生活的新期待。

于本公告日期,接管人并未订立任何具有法律约束力的协议。除上述者外,公司概无收到任何有关押记股份的消息或进一步发展资料。

要是路由后发现非本耕种的辘集包,那就参加到 ip_forward 进行转发,终末通过 ip_output 发送出去。

具体的代码如下。

//file: net/ipv4/ip_input.c static int ip_rcv_finish(struct sk_buff *skb){     ...     if (!skb_dst(skb)) {         int err = ip_route_input_noref(skb, iph->daddr, iph->saddr,                            iph->tos, skb->dev);         ...     }     ...     return dst_input(skb); } 

其中 ip_route_input_noref 即是在进行路由查找。

//file: net/ipv4/route.c int ip_route_input_noref(struct sk_buff *skb, __be32 daddr, __be32 saddr,     u8 tos, struct net_device *dev) {  ...  res = ip_route_input_slow(skb, daddr, saddr, tos, dev);  return res; } 

这里记取 ip_route_input_slow 就行了,背面咱们再看。

1.3 linux 路由小结

路由在内核公约栈中的位置不错用如下一张图来示意。

皇冠官方网站是什么

辘集包在发送的时辰,需要从本机的多个网卡耕种中选择一个合适的发送出去。辘集包在罗致的时辰,也需要进行路由选择,要是是属于本耕种的包就往表层送到辘集层、传输层直到 socket 的罗致缓存区中。要是不是本耕种上的包,就选择合适的耕种将其转发出去。

二、Linux 的路由完了 2.1 路由表

路由表(routing table)在内核源码中的另外一个叫法是转发信息库(Forwarding Information Base,FIB)。是以你在源码中看到的 fib 伊始的界说基本上即是和路由表斟酌的功能。

其中路由表自己是用 struct fib_table 来示意的。

struct fib_table {  struct hlist_node tb_hlist;  u32   tb_id;  int   tb_default;  int   tb_num_default;  unsigned long  tb_data[0]; }; 

扫数的路由表都通过一个 hash - fib_table_hash 来组织和顾问。它是放在辘集定名空间 net 下的。这也就评释每个定名空间都有我方寂寞的路由表。

zh皇冠新2网

//file:include/net/net_namespace.h struct net {  struct netns_ipv4 ipv4;  ... }  //file: include/net/netns/ipv4.h struct netns_ipv4 {  // 扫数路由表   struct hlist_head *fib_table_hash;   // netfilter  ... } 

在默许情况下,皇冠分红Linux 惟一 local 和 main 两个路由表。要是内核编译时扶植计谋路由,那么顾问员最多不错竖立 255 个寂寞的路由表。

要是你的劳动器上创建了多个辘集定名空间的话,那么就会存在多套路由表。以除了默许定名辘集空间外,又创显明一个新辘集定名空间的情况为例,路由表在扫数这个词内核数据结构中的关联联系归来如下图所示。

www.betkingdomzonehomehub.com 2.2 路由查找

在上头的末节中咱们看到,发送历程调用 ip_route_output_ports 来查找路由,罗致历程调用 ip_route_input_slow 来查找。但其实这两个函数都又最终会调用到 fib_lookup 这个中枢函数,源码如下。

冠竞体育下载
//file: net/ipv4/route.c struct rtable *__ip_route_output_key(struct net *net, struct flowi4 *fl4) {  ...  // 参加 fib_lookup  if (fib_lookup(net, fl4, &res)) {  } }  //file: net/ipv4/route.c static int ip_route_input_slow(struct sk_buff *skb, __be32 daddr, __be32 saddr,           u8 tos, struct net_device *dev) {  ...  // 参加 fib_lookup  err = fib_lookup(net, &fl4, &res); } 

咱们来看下 fib_loopup 都干了啥。为了容易相识,咱们只看一下不扶植多路由表版块的 fib_lookup。

//file: include/net/ip_fib.h static inline int fib_lookup(struct net *net, const struct flowi4 *flp,         struct fib_result *res) {  struct fib_table *table;   table = fib_get_table(net, RT_TABLE_LOCAL);  if (!fib_table_lookup(table, flp, res, FIB_LOOKUP_NOREF))   return 0;   table = fib_get_table(net, RT_TABLE_MAIN);  if (!fib_table_lookup(table, flp, res, FIB_LOOKUP_NOREF))   return 0;  return -ENETUNREACH; } 

这个函数即是按序到 local 和 main 表中进行匹配,匹配到后就复返,不会不时往下匹配。从上头不错看到 local 表的优先级要高于 main 表,要是 local 表中找到了法规,则路由历程就截至了。

这也即是许多同学说为什么 ping 本机的时辰在 eth0 上合手不到包的压根原因。扫数掷中 local 表的包都会被送往 loopback 设立,不会过 eth0。

趣博彩票下载安装 三、路由的使用本事 3.1 开启转发路由

在默许情况下,Linux 上的转发功能是关闭的,这时辰 Linux 发现收到的辘集包不属于我方就会将其丢弃。

但在某些场景下,例如关于容器辘集来说,Linux 需要转发本机上其它辘集定名空间中过来的数据包,需要手工开启转发。如下这两种本事都不错。

# sysctl -w net.ipv4.ip_forward=1 # sysctl net.ipv4.conf.all.forwarding=1 

开启后,Linux 就能像路由器相通对不属于本机(严格地说是本辘集定名空间)的 IP 数据包进行路由转发了。

3.2 张望路由表

在默许情况下,Linux 惟一 local 和 main 两个路由表。要是内核编译时扶植计谋路由,那么顾问员最多不错竖立 255 个寂寞的路由表。在 centos 上不错通过以下状貌张望是否开启了 CONFIG_IP_MULTIPLE_TABLES 多路由表扶植。

# cat /boot/config-3.10.0-693.el7.x86_64  CONFIG_IP_MULTIPLE_TABLES=y ... 

扫数的路由表按照从 0 - 255 进行编号,每个编号都有一个笔名。编号和笔名的对应联系在 /etc/iproute2/rt_tables 这个文献里不错查到。

# cat /etc/iproute2/rt_tables 255     local 254     main 253     default 0       unspec 200     eth0_table 

张望某个路由表的竖立,通过使用 ip route list table {表名} 来张望。

#ip route list table local local 10.143.x.y dev eth0 proto kernel scope host src 10.143.x.y local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 

要是是张望 main 路由表,也不错径直使用 route 高歌

# route -n Kernel IP routing table Destination     Gateway         Genmask         Flags Metric Ref    Use Iface 10.0.0.0        10.*.*.254      255.0.0.0       UG    0      0        0 eth0 10.*.*.0        0.0.0.0         255.255.248.0   U     0      0        0 eth0 

上头字段中的含义如下

Destination:主张地址,不错是一个具体的 IP,也不错是一个网段,和 Genmask 一谈示意。 Gateway:网关地址,要是是 0.0.0.0 示意不需要经过网关。 Flags: U 示意有用,G 示意相连路由,H 这条法规是主机路由,而不是辘集路由。 Iface:网卡耕种,使用哪个网卡将包送往常。

上述服从中输出的第一条路由法规示意这台机器下,真正地说这个辘集环境下,扫数方针为 10.0.0.0/8(Genmask 255.0.0.0 示意前 8 位为子网掩码) 网段的辘集包都要通过 eth0 耕种送到 10...254 这个网关,由它再匡助转发。

第二条路由法规示意,要是主张地址是 10...0/21(Genmask 255.255.248.0 示意前 21 位为子网掩码)则径直通过 eth0 发出即可,不需要经过网关就可通讯。

3.3 修改路由表

默许的 local 路由表是内核把柄刻下机器的网卡耕种竖立自动生成的,不需要手工存眷。关于main 的路由表竖立咱们一般只需要使用 route add 高歌就不错了,删除使用 route del。

修改主机路由

# route add -host 192.168.0.100 dev eth0 //直连无须网关 # route add -host 192.168.1.100 dev eth0 gw 192.168.0.254 //下一跳网关 

修改辘集路由

# route add -net 192.168.1.0/24 dev eth0 //直连无须网关 # route add -net 192.168.1.0/24 dev eth0 gw 10.162.132.110 //下一跳网关 

也不错指定一条默许法规,不掷中其它法规的时辰会履行到这条。

# route add default gw 192.168.0.1 eth0 

关于其它编号的路由表念念要修改的话,就需要使用 ip route 高歌了。这里不外多张开,只用 main 表举一个例子,有更多使用需求的同学请自行搜索。

# ip route add 192.168.5.0/24 via 10.*.*.110 dev eth0 table main 
3.4 路由法规测试

在竖立了一系列路由法规后,为了快速校验是否适宜预期,不错通过 ip route get 高歌来证明。

# ip route get 192.168.2.25 192.168.2.25 via 10.*.*.110 dev eth0 src 10.*.*.161     cache 
本文归来

在现如今多样辘集假造化技艺里,到处都能看着对路由功能的活泼诈欺。是以咱们今天专诚深入商榷了一下 Linux 路由职责旨趣。

在 Linux 内核中,关于发送历程和罗致历程都会触及路由选择,其中罗致历程的路由选择是为了判断是该腹地罗致也曾将它转发出去。

 

默许有 local 和 main 两个路由表,不外要是装配的 linux 开启了 CONFIG_IP_MULTIPLE_TABLES 选项的话,最多能扶植 255 张路由表。

太阳城集团官方网站

路由选择历程其实不复杂,即是把柄各个路由表的竖立找到合适的网卡耕种,以及下一跳的地址,然后把包转发出去就算是完事。

通过合适地竖立路由法规,容器中的辘集环境和外部的通讯不再是难事。通过多数地防止路由法规就不错完了假造辘集互通。

瑞士 2008 欧洲杯

皇冠客服飞机:@seo3687

皇冠手机网址多少

 

好了,今天的共享就到这里了,期待你的点赞、再看和转发~~