导航菜单
首页 » 达内会计学院 » 正文

道德的火焰-看完这篇!Linux网络基础知识通关!(文末附Linux教程)

iptables

先看一张图:

对外交互包括两个通道:

1. 由iptables客户端调用指令来装备管理防火墙,最终相关恳求发送到内核模块;内核模块用于安排iptables运用的表、链和规矩。2. iptables依靠netfilter来注册各种hooks完结对数据包的详细转发逻辑操控

netfilter的hook点总结

数据包从左面进入IP协议栈,进行IP校验今后,数据包被第一个钩子函数PREROUTING处理,然后就进入路由模块,由其决议该数据包是转宣布去仍是送给本机。若该数据包是送给本机的,则要经过钩子函数LOCALIN处理后传递给本机的上层协议;若该数据包应该被转发,则它将被钩子函数FORWARD处理,然后还要经钩子函数POSTROUTING处理后才干传输到网络。本机进程发作的数据包要先经过钩子函数LOCALOUT处理后,再进行路由挑选处理,然后经过钩子函数POST_ROUTING处理后再发送到网络。

原理:

iptables依据功用界说了4个表,raw,mangle,filter,nat。这个四个表中有各自包括不同的链,如PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING,这些链与Netfilter的HOOK点相对应,链中包括详细的规矩然后操控数据包了.

关于不同表的阐明如下:

每个注册的Hook函数一次调用各表链的规矩来处理网络包:

从上图能够看出每个hook中处理的chain次序依次为:mangle-->nat-->filter 特别地,对filter table而言,一个数据包,依据其源和意图地址,只能被其间的一个hook处理。

iptables指令格局:

举例:

增加一条rule:

iptables -A INPUT -p icmp -s 10.24.67.97 -j DROP//drop掉源为10.24.67.97的icmp报文

检查报文匹配:

watch -n 1 -d 'iptables -t filter -L INPUT -nv'

删去一条rule:

iptables -D INPUT -p ic道德的火焰-看完这篇!Linux网络基础知识通关!(文末附Linux教程)mp -s 10.24.67.97 -j DROP

NAT

可运用iptables nat表来完结NAT功用,包括SNAT和DNAT。

(1)SNAT:路由-->转化-->宣布,转化过程在POSTROUTING链上完结。

举例:

iptables -t nat -A POSTROUTING -s 192.168.252.0/24 -j SNAT -to-source 10.24.67.91

(2)DNAT:转化-->路由-->宣布 或许 本机报文-->转化-->宣布(这种很少用到)道德的火焰-看完这篇!Linux网络基础知识通关!(文末附Linux教程),转化过程在PREROUTING和OUTPUT链上完结。

举例:

iptables -t nat -A PREROUTING -d 10.24.67.91 -p tcp --dport 80 -j DNAT --to-destination 192.168.252.1



ROUTE

route指令能够用来操作和显现IP路由表。

指令格局如下:

route [-CFvnee]
route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] [mss M] [window W] [irtt I] [reject] [mod] [dyn] [rein-state] [[dev] If]
route [-v] [-A family] del [-net|-host] target [gw Gw] [netmask Nm] [metric N] [[dev] If]

比如:

● route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 #增加一条经过 eth0 抵达 244.0.0.0 的路由
● route add -net 224.0.0.0 netmask 240.0.0.0 reject #增加一条屏蔽的路由,意图地址为224.x.x.x将被回绝。
● route del -net 224.0.0.0 netmask 240.0.0.0
● route del -net 224.0.0.0 netmask 240.0.0.0 reject
● route del default gw 192.168.120.240
● route add default gw 192.168.120.240

network namespace

在三层网络上,Linux network namespace(netns)经过虚拟化网络协议栈,将一个物理三层网络分割成几个独立的虚拟肌息丸三层网络。

Network namespace (netns)从 Linux 2.6.24 版别开端增加,直到 2.6.29 增加完结。每个 netns 具有独立的 (virtual)network devices, IP addresses, IP routing tables, socket listing, connection tracking table, firewall, /proc/net directory, ports 等等。新创立的 netns 默许只包括 loopback device。除了这个设备,每个 network device,不管是物理的仍是虚拟的网卡仍是网桥等,都只能存在于一个 netns。而且,衔接物理硬件的物理设备只能存在于 root netns。其它一般的网络设备能够被创立和增加到某个 netns。

举例:

#增加 network namespace
ip netnas add
#Example:
ip netns add nstest
#列表一切 netns
ip netns list
#删去某 netns
ip netns delete
#在 network namespace 中运转指令
ip netns exec
#Example using the namespace from above:
ip netns exec nstest ip addr
#增加 virtual interfaces 到 network namespace
ip link add veth-a type veth peer name veth-b #创立一对虚拟网卡veth-a 和 veth-b,两者由一根虚拟网线衔接
#将 veth-b 增加到 network namespace
ip link set veth-b netns nstest
#设置 VI 的 IP 地址
#defaut namespace 中
ip addr add 10.0.0.1/24 dev veth-a
ip link set dev veth-a up
# namespace nstest 中
ip netns exec nstest ip addr add 10.0.0.2/24 dev veth-b
ip netns exec nstest ip link set dev veth-b up
#互通
# ping 10.1.1.1
PING 10.1.1.1 (10.1.1.1) 56(84) bytes of data.
64 bytes from 10.1.1.1: icmp_seq=1 ttl=64 time=0.087 ms

# ip netns exec netns1 ping 10.1.1.2
PING 10.1.1.2 (10.1.1.2) 56(84) bytes of data.
64 bytes from 10.1.1.2: icmp_seq=1 ttl=64 time=0.054 ms
#检查路由表和 iptbales
# ip netns exec netns1 route
# ip netns exec netns1 iptables -L

免费ARP

免费ARP可被用于以下场景:

  • mac地址发作改变:布告自己的mac地址发作改变,以 ARP Response 的方法发送播送,它一般仅仅为了把自己的ARP信息布告/更新给局域网整体,这种Response不需求他人恳求,是自己主动发送的布告:
  • 重复地址检测:重复 MAC 地址检测。以 ARP Request的方法发送播送,恳求自己的MAC地址,意图是勘探局域网中是否有跟自己IP地址相同的主机,也便是常说的IP抵触。发送主机并不需求必定收到此恳求的答复。假如收到一个答复,表明网络中存在与本身IP相同的主机。假如没有收到应对,则表明本机所运用的IP与网络中其它主机并不抵触。
  • virtual IP:当供给虚拟IP的active server down掉时,经过某种机制从头选取一个active server,并由此server发送一个免费ARP,格局同"mac地址发作改变"一节,告诉网络中的其他主机改写arp表项。

路由战略

依据战略的路由比传统路由在功用上更强壮,运用更灵敏,它使网络管理员不只能够依据意图地址而且能够依据报文巨细、运用或IP源地址等特点来挑选转发途径

ip rule 指令:

Usage: ip rule [ list | add | del ] SELECTOR ACTION (add 增加;del 删去;llist 列表)
SELECTOR := [ from PREFIX 数据包源地址] [ to PREFIX 数据包意图地址] [ tos TOS 服务类型][ dev STRING 物理接口] [ pref NUMBER ] [fwmark MARK iptables 标签]
ACTION := [ table TABLE_ID 指定所运用的路由表] [ nat ADDRESS 网络地址转化][ prohibit 丢掉该表| reject 回绝该包| unreachable 丢掉该包]
[ flowid CLASSID ]
TABLE_ID := [ local | main | default | new | NUMBER ]
举例:
ip rule add from 192.203.80/24 table inr.ruhep prio 220 经过路由表 inr.ruhep 路由来自源地址为192.203.80/24的数据包
ip rule add from 193.233.7.83 nat 192.203.80.144 table 1 prio 320 把源地址为193.233.7.83的数据报的源地址转化为192.203.80.144,并经过表1进行路由

在linux体系启动时,内核会为路由战略数据库(RPDB)装备三条缺省的规矩:- 0 匹配任何条件 查询路由表local(ID 255) 路由表local是一个特别的路由表,包括关于本地和播送地址的高优先级操控路由。rule 0十分特别,不能被删去或许掩盖。

- 32766 匹配任何条件 查询路由表main(ID 254) 路由表main(ID 254)是一个一般的表,包括一切的无战略路由。体系管理员能够删去或许运用别的的规矩掩盖这条规矩。- 32767 匹配任何条件 查询路由表default(ID 253) 路由表default(ID 253)是一个空表,它是为一些后续处理保存的。关于前面的缺省战略没有匹配到的数据包,体系运用这个战略进行处理。这个规矩也能够删去。

不要混杂路由表和战略:规矩指向路由表,多个规矩能够引证一个路由表,而且某些路由表能够没有战略指向它。假如体系管理员删去了指向某个路由表的一切规矩,这个表就没有用了,可是依然存在,直到里边的一切路由都被删去,它才会消失

路由表

路由表首要完结依据意图地址查找转发途径。打个比如,路由表就像咱们平常运用的地图相同,标识着各种道路,路由表中保存着子网的标志信息、网上路由器的个数和下一个路由器的姓名等内容。路由表依据其树立的办法,能够分为动态路由表和静态路由表。

linux 体系中,能够自界说从 1-252个路由表,其间,linux体系维护了4个路由表:- 0#表:体系保存表 - 253#表:defulte table 没特别指定的默许路由都放在改表 - 254#表:main table 没指明路由表的一切路由放在该表 - 255#表:locale table 保存本地接口地址,播送地址、NAT地址 由体系维护,用户不得更改

路由表的检查可有以下二种办法:

  • ip route list table table_number
  • ip route list table table_name

路由表序号和表名的对应联系在 /etc/iproute2/rt_tables 文件中,可手动修正。

以下表为例:

Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.123.254 192.168.123.88 1 #缺省路由,意图地址不在本路由表中的数据包,经过本机的 192.168.123.88 接口发到下一个路由器 192.168.123.254
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 #发给本机的网络包
192.168.123.0 255.255.255.0 192.168.123.68 192.168.123.68 1 #直连路由。意图地址为 192.168.123.0/24 的包发到本机 192.168.123.88 接口
192.168.123.88 255.255.255.255 127.0.0.1 127.0.0.1 1 #意图地址为 192.168.123.88的包是发给本机的包
192.168.123.255 255.255.255.255 192.168.123.88 192.168.123.88 1 #播送包的网段是 192.168.123.0/24,经过 192.168.123.88 接口宣布去
224.0.0.0 224.0.0.0 192.168.123.88 192.168.123.88 1 #多播包,经过 192.168.123.88 接口宣布去
255.255.255.255 255.255.255.255 192.168.123.68 192.168.123.68 1 #全网播送包
Default Gateway: 192.168.123.254

从上表中可看出依据子网掩道德的火焰-看完这篇!Linux网络基础知识通关!(文末附Linux教程)码,可将路由分为三种类型:- 主机路由:指向单个IP地址或主机名的路由记载。主机路由的Flags字段为H。- 网段路由:代表主机能够抵达的网络。网络路由的Flags字段为N。- 默许路由:当主机不能在路由表中查找到方针主机的IP地址或网络路由时,数据包就被发送到默许路由(默许网关)上。默许路由的Flags字段为G。

设置和检查路由表都能够用route指令,该指令格局如下:

route [add|del] [-net|-hos道德的火焰-看完这篇!Linux网络基础知识通关!(文末附Linux教程)t] target [netmask Nm] [gw Gw] [[dev] If]
- add : 增加一条路由规矩,del : 删去一条路由规矩,-net : 意图地址是一个网络,-host : 意图地址是一个主机,target : 意图网络或主机
- netmask : 意图地址的网络掩码,gw : 路由数据包经过的网关,dev : 为路由指定的网络接口

还能够依据路由的生成办法区分如下:- 静态路由

由用户或网络管理员手艺装备的路由信息。当网络的拓扑结构或链路的状况发作改变时,网络管理员需求手艺去修正路由表中相关的静态路由信息。静态路由信息在缺省情况下是私有的,不会传递给其他的路由器。当然,网管员也能够经过对路由器进行设置使之成为同享的。静态路由一般适用于比较简单的网络环境,在这样的环境中,网络管理员易于清楚地了解网络的拓扑结构,便于设置正确的路由信息。- 动态路由

动态路由是指路由器能够主动地树立自己的路由表,而且能够依据实际情况的改变适时地进行调整。它是与静态路由相对的一个概念,指路由器能够依据路由器之间的交流的特定路由信息主动地树立自己的路由表,而且能够依据链路和节点的改变适时地进行主动调整。当网络中节点或节点间的链路发作毛病,或存在其它可用路由时,动态路由能够自行挑选最佳的可用路由并持续转发报文。

常见的动态路由协议有以下几个:路由信息协议(RIP)、OSPF(Open Shortest Path First开放式最短途径优先)、IS-IS(Intermediate System-to-Intermediate System,中心体系到中心体系)、鸿沟网关协议(BGP)是运转于 TCP 上的一种自治体系的路由协议。

学习大数据之前呢,首先得学会Linux是怎样回事,从安装到做开发,怎样去操作,这些你都懂吗??

获取方法:

1.转发重视小编;

2.私信小编“学习”来进行获取~+

二维码