iptables

Posted by 夏泽民

ptables是linux自带的一款开源的内核级基于数据包过滤的防火墙。利用iptables可以实现诸如数据包过滤、转发等功能。 iptables包含表,表中包含链,链中包含规则。(规则指的是一条条用于过滤数据包的语句) iptables共有四个表五个链,简称四表五链。 四表指的是filter, nat, mangle, raw。其中前2个是用的最多的,后面2个用的较少,raw可以说基本不怎么使用。 五链指的是INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING。(注意,链名用大写。) filter表 过滤数据包,用于本机防火墙,这是默认表。 包含的三个链, INPUT 链:用于过滤所有目标地址是本机的数据包 OUTPUT 链:用于过滤所有本机产生的数据包 FORWARD链:用于过滤所有路过本机的数据包



gateway

Posted by 夏泽民

网关(Gateway)又称网间连接器、协议转换器。网关在网络层以上实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关既可以用于广域网互连,也可以用于局域网互连。 网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同层–应用层。 网关(Gateway)又称网间连接器、协议转换器。默认网关在网络层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和路由器类似,不同的是互连层。网关既可以用于广域网互连,也可以用于局域网互连。 【说明:由于历史的原因,许多有关TCP/IP的文献曾经把网络层使用的路由器称为网关,在今天很多局域网采用都是路由来接入网络,因此通常指的网关就是路由器的IP!】 在OSI中,网关有两种:一种是面向连接的网关,一种是无连接的网关。当两个子网之间有一定距离时,往往将一个网关分成两半,中间用一条链路连接起来,我们称之为半网关。 按照不同的分类标准,网关也有很多种。TCP/IP协议里的网关是最常用的,在这里我们所讲的“网关”均指TCP/IP协议下的网关。 那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。 在和 Novell NetWare 网络交互操作的上下文中,网关在 Windows 网络中使用的服务器信息块 (SMB) 协议以及NetWare网络使用的 NetWare 核心协议 (NCP) 之间起着桥梁的作用。网关也被称为 IP路由器。 手动设置适用于电脑数量比较少、TCP/IP参数基本不变的情况 自动设置就是利用DHCP服务器来自动给网络中的电脑分配IP地址、子网掩码和默认网关。这样做的好处是一旦网络的默认网关发生了变化时,只要更改了DHCP服务器中默认网关的设置,那么网络中所有的电脑均获得了新的默认网关的IP地址。这种方法适用于网络规模较大、TCP/IP参数有可能变动的网络。另外一种自动获得网关的办法是通过安装代理服务器软件(如MS Proxy)的客户端程序来自动获得,其原理和方法和DHCP有相似之处。 协议 (GGP) 核心网关为了正确和高效地路由报文需要知道Internet其他部分发生的情况,包括路由信息和子网特性。 网关关系及图片说明 网关关系及图片说明 当一个网关处理重负载而使速度特别慢,并且这个网关是访问子网的惟一途径时,通常使用这种类型的信息,网络中的其他网关能剪裁交通流量以减轻网关的负载。 GGP主要用于交换路由信息,不要混淆路由信息(包括地址、拓扑和路由延迟细节)和作出路由决定的算法。路由算法在网关内通 常是固定的且不被GGP改变。核心网关之间通过发送GGP信息,并等待应答来通信,之后如果收到含特定信息的应答就更新路由表。 注意GGP的最新改进SPREAD已经用于Internet,但它还不如GGP普及。GGP被称为向量-距离协议。要想有效工作,网关必须含有互联网络上有关所有网关的完整信息。否则,计算到一个目的地的有效路由将是不可能的。因为这个原因,所有的核心网关维护一张Internet上所有核心网关的列表。这是一个相当小的表,网关能容易地对其进行处理。 外部 (EGP) 外部网关协议用于在非核心的相邻网关之间传输信息。非核心网关包含互联网络上所有与其直接相邻的网关的路由信息及其所连机器信息,但是它们不包含Internet上其他网关的信息。对绝大多数EGP而言,只限制维护其服务的局域网或广域网信息。这样可以防止过多的路由信息在局域网或广域网之间传输。EGP强制在非核心网关之间交流路由信息。 由于核心网关使用GGP,非核心网关使用EGP,而二者都应用在Internet上,所以必须有某些方法使二者彼此之间能够通信。Internet使任何自治(非核心)网关给其他系统发送“可达”信息,这些信息至少要送到一个核心网关。如果有一个更大的自治网络,常常认为有一个网关来处理这些可达信息。 和GGP一样,EGP使用一个查询过程来让网关清楚它的相邻网关并不断地与其相邻者交换路由和状态信息。EGP是状态驱动的协议,意思是说它依赖于一个反映网关情况的状态表和一组当状态表项变化时必须执行的一组操作。 内部 (IGP) 有几种内部网关协议可用,最流行的是RIP和HELLO,另一个协议称为开放式最短路径优先协议(OSPF),这些协议没有一个是占主导地位的,但是RIP可能是最常见的IGP协议。选择特定的IGP以网络体系结构为基础。RIP和HELLO协议都是计算到目的地的距离,它们的消息包括机器标识和到机器的距离。 一般来讲,由于它们的路由表包含很多项,因此消息比较长。RIP和HELLO一直维护相邻网关之间的连接性以确保机器是活跃的。路由信息协议使用广播技术。意思是说网关每隔一定时间要把路由表广播给其他网关。这也是RIP的一个问题,因为这会增加网络流量,降低网络性能。HELLO协议与RIP的不同之处在于HELLO使用时间而不是距离作为路由因素。这要求网关对每条路由有合理的准确时间信息。由于这个原因,所以HELLO协议依赖于时钟同步消息。 开放式最短路径优先协议是由Internet工程任务组开发的协议,希望它能成为居于主导地位的IGP。用“最短路径”来描述协议的路由过程不准确。更好一些的名字是“最优路径”, 这其中要考虑许多因素来决定到达目的地的最佳路由。 应用 应用网关在应用层上进行协议转换。例如,一个主机执行的是ISO电子邮件标准,另一个主机执行的是Internet 电子邮件标准,如果这两个主机需要交换电子邮件,那么必须经过一个电子邮件网关进行协议转换,这个电子邮件网关是一个应用网关。NCP是工作在OSI第七层的协议,用以控制客户站和服务器间的交互作用,主要完成不同方式下文件的打开、关闭、读取功能。 信令网关,中继网关,还有接入网关: 信令网关SG,主要完成7号信令网与IP网之间信令消息的中继,在3G初期,对于完成接入侧到核心网交换之间的消息的转接(3G之间的RANAP消息,3G与2G之间的BSSAP消息),另外还能完成2G的MSC/GMSC与软交换机之间ISUP消息的转接。 中继网关又叫IP网关,同时满足电信运营商和企业需求的VoIP设备。中继网关(IP网关)由基于中继板和媒体网关板建构,单板最多可以提供128路媒体转换,两个以太网口,机框采用业界领先的CPCI标准,扩容方便具有高稳定性、高可靠性、高密度、容量大等特点. 接入网关是基于IP的语音/传真业务的媒体接入网关,提供高效、高质量的话音服务,为运营商、企业、小区、住宅用户等提供VoIP解决方案。 除此之外,网关还可以分为:协议网关、应用网关和安全网关 协议网关 协议网关通常在使用不同协议的网络区域间做协议转换。这一转换过程可以发生在OSI参考模型的第2层、第3层或2、3层之间。但是有两种协议网关不提供转换的功能:安全网关和管道。由于两个互连的网络区域的逻辑差异,安全网关是两个技术上相似的网络区域间的必要中介。如私有广域网和公有的因特网。 应用网关 应用网关是在使用不同数据格式间翻译数据的系统。典型的应用网关接收一种格式的输入,将之翻译, 然后以新的格式发送。输入和输出接口可以是分立的也可以使用同一网络连接。 应用网关也可以用于将局域网客户机与外部数据源相连,这种网关为本地主机提供了与远程交互式应用 网关 网关 的连接。将应用的逻辑和执行代码置于局域网中客户端避免了低带宽、高延迟的广域网的缺点,这就使得客户端的响应时间更短。应用网关将请求发送给相应的计算机,获取数据,如果需要就把数据格式转换成客户机所要求的格式。 安全网关 安全网关是各种技术有趣的融合,具有重要且独特的保护作用,其范围从协议级过滤到十分复杂的应用级过滤。 可以说,网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同时,网关也可以提供过滤和安全功能。大多数网关运行在OSI 7层协议的顶层——应用层。



docker_bridge 容器桥接到物理网络

Posted by 夏泽民

在5台物理主机上的虚拟机中都装了Docker,每台中都有3个容器,现在要解决容器跨主机通信,五种方案: 一、利用OpenVSwitch 二、利用Weave 三、Docker在1.9之后支持的Overlay network(这个好像是官方的做法) 四、将多个物理机的容器组到一个物理网络来 1.创建自己的网桥br0 2.将docker默认网桥绑定到br0 五、修改主机docker默认的虚拟网段,然后在各自主机上分别把对方的docker网段加入到路由表中,配合iptables即可实现docker容器跨主机通信 跨主机容器通信大致有以下几种方式:

  1. NAT方式 NAT就是传统的docker网络,利用宿主机的IP和Iptables来达到容器,主机之间的通信。容器对外IP都是宿主机的IP。只要宿主机之间三层可达,容器之间就可以通信。
  2. Tunnel(overlay)方式 VPN,ipip,VXLAN等都是tunnel技术,简单讲就是在容器的数据包间封装一层或多层其他的数据协议头,达到连通的效果。 Docker的Libnetwork就支持vxlan的overlay方式,weave也支持UDP和Vxlan的overlay模式,flannel,calico等都支持overlay模式。 • Overlay一般通过vSwitch来实现,比如OVS • 一般需要一个全局的KV store(sdn controller、etcd、consul)来保存控制信息。
  3. Routing方式 路由方案主要是通过路由设置的方式让容器对容器,容器对宿主机之间相通信。例如:calico的BGP路由方案
  4. “大二层”方式 大二层就是将物理网卡和容器网络桥接到同一个linux bridge。容器网络可以直接接入该linux bridge,也可以将容器网络接入容器网桥docker0,再把docker0桥接到linux bridge上。目的是使得容器网络和宿主机网络在同一个二层网络。 docker 默认的桥接网卡是docker0,它只会在本机桥接所有的容器网卡,举例来说容器的虚拟网卡在主机上看一般叫做veth** 而docker只是把所有这些网卡桥接在一起,这样就可以把这个网络看成是一个私有的网络,通过nat 连接外网,如果要让外网连接到容器中,就需要做端口映射,即-p参数 当rocker启动时,会在主机上创建一个docker0的虚拟网卡。他随机挑选RFC1918私有网络中的一段地址给docker0。比如172.17.42.1/16,16位掩码的网段可以拥有65534个地址可以使用,这对主机和容器来说应该足够了。docker0 不是普通的网卡,他是桥接到其他网卡的虚拟网卡,容器使用它来和主机相互通信。当创建一个docker容器的时候,它就创建了一个对接口,当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包,它们是绑在一起一对孪生接口。这对接口在容器中的那个的名字是eth0,主机上的接口会指定一个唯一的名字,比如vethAQI2QT这样的名字,这种接口名字不再主机的命名空间中。所有的veth的接口都会桥接到docker0,这样docker就创建了在主机和所有容器之间一个虚拟共享网络。 如果在企业内部应用,或则做多个物理主机的集群,可能需要将多个物理主机的容器组到一个物理网络中来,那么就需要将这个网桥桥接到我们指定的网卡上。下面以ubuntu为例创建多个主机的容器联网。 第一步:创建自己的网桥 编辑/etc/network/interface文件 auro br0 iface bro inet static address netmask gateway bridge_ports em1 bridge_stp off dns-nameservers 8.8.8.8 将docker的默认网桥绑定到这个新建的br0上面,这样就将这台机器上容器绑定到em1这个网卡所对应的物理网络上了。ubuntu修改/etc/default/docker文件 添加最后一行内容 DOCKER_OPTS=”-b=br0” 这改变默认的docker网卡绑定,你也可以创建多个网桥绑定到多个物理网卡上,在启动docker的时候 使用-b参数 绑定到多个不同的物理网络上。 重启docker服务后,再进入容器可以看到它已经绑定到你的物理网络上了,这样就直接把容器暴露到你的物理网络上了,多台物理主机的容器也可以相互联网了。需要注意的是,这样就需要自己来保证容器的网络安全了。 Docker发布了1.9版本,实现了原本实验性的Networking组件的支持。用户可以在Swarm中使用它或者将其作为Compose 工具。创建虚拟网络并将其连接到容器上,可实现多个主机上容器相互通信,并且实现不同的应用程序或者应用程序不同部分能够相互隔离。互联子系统设计为可插拔式,兼容VXLAN或者IPVLAN等技术。 Docker 容器实现跨主机通讯主要通过几种方式:自带overlay network插件,第三方插件如weave、ovs等,docker swarm(虽然也是通过key value service进行调用)。在这里主要介绍直接使用自带插件,以及通过docker swarm的两种实现方式。 直接使用自带插件实现容器跨主机访问 测试环境为ubuntu14.04。根据docker建议要求,将内核升级到3.19.如果内核版本过低,将会出现overlay network创建失败或加入失败等一系列问题。 内核升级 #apt-get install linux-generic-lts-vivid 升级完成,重启主机。 # uname -a Linux ukub09 3.19.0-33-generic #38~14.04.1-Ubuntu SMP Fri Nov 6 18:17:28 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 启动key value service 可以选择使用zookeeper、etcd、consul等多种组件。本例使用额外一台虚拟机,启用和官方文档相一致的consul镜像。 docker $(docker-machine config consul2) run -d
    -p “8501:8500”
    -h “consul”
    progrium/consul -server -bootstrap 此时可以通过ip:8501对consul服务进行访问。 将key value service信息加入docker daemon 修改希望加入docker overlay network的所有主机上docker daemon服务。 #vi /etc/dafault/docker DOCKER_OPTS=’ -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock –cluster-store=consul://172.25.2.43:8501 –cluster-advertise=eth0:2376’ 通过修改以下两个参数实现 –cluster-store= 参数指向docker daemon所使用key value service的地址 –cluster-advertise= 参数决定了所使用网卡以及docker daemon端口信息 重启docker服务。 #service docker restart docker 网络的创建与操作 此时可以通过docker network create创建-d overlay属性的驱动。 #docker network create -d overlay over 列出当前网络 root@ukub10:~# docker network ls NETWORK ID NAME DRIVER b95efb2ab985 over overlay
    0a4a123fc278 bridge bridge
    2da9ecadf108 none null
    5ca3275ec2a9 host host
    在另一台已加入key value service指向的主机上同样可以看到这个网络 root@ukub09:~# docker network ls NETWORK ID NAME DRIVER b95efb2ab985 over overlay
    b5f9713c9f2b bridge bridge
    16e1cdf30f97 none null
    cf257529463c host host docker网络的连接方式 可以在两台主机上分别创建容器,互相进行ping或ssh访问。官方文档例子创建一个nginx容器,并在另一个容器内抓取其状态进行验证。这里不再详述。 创建容器接入指定网络 #docker run -itd –name=testcontainer –net=over nginx 将容器从指定网络中退出 #docker network disconnect over testcontainer 重新连入指定网络 #docker network connect over testcontainer 连接与断开将会是实时的。在连接之后,即可通过容器名访问本网络中所有容器。 使用Swarm创建docker cluster实现跨主机管理和网络访问 根据官方文档,需要搭建起基于swarm的cluster,来实现Docker overlay network。为部署整套Docker cluster,需要安装docker machine/compose/swarm等组件。 使用第三方网络插件实现跨主机容器通讯也变得更容易了。 安装docker machine docker machine用来进行docker的推送安装,可以在许多driver上安装部署docker: amazonec2 azure digitalocean exoscale generic google none openstack rackspace softlayer virtualbox vmwarevcloudair vmwarevsphere 首先需要安装好docker engine,之后下载并将docker machine的库文件移动到bin下。 #curl -L https://github.com/docker/machine/releases/download/v0.5.0/docker-machine_linux-amd64.zip >machine.zip &&
    unzip machine.zip &&
    rm machine.zip &&
    mv docker-machine* /usr/local/bin 验证安装

    docker-machine -v

    docker-machine version 0.5.0 (04cfa58) docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM 官方文档的使用virtualbox进行各种角色主机的启用。本篇文档则在已有的虚拟机环境中进行。 使用docker-machine进行推送安装 首先需要拥有一台linux系统,并使docker-machine主机可以无密码访问到这台系统。 #ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.2.43 之后即可通过docker-machine进行安装。 安装通过internet下载相关包,并通过docker-machine进行设置安装的。必须保证网络畅通,否则可能安装失败。 #docker-machine create -d generic –generic-ip-address=172.25.2.43 –generic-ssh-user=root test5 安装后,可以查看所有被docker-machine安装控制后的主机状态

    docker-machine ls

    NAME ACTIVE DRIVER STATE URL SWARM c0-master - generic Running tcp://172.25.2.44:2376 c0-master (master) c0-n1 - generic Running tcp://172.25.2.45:2376 c0-master c0-n2 - generic Running tcp://172.25.2.46:2376 c0-master dm01 - generic Running tcp://172.25.2.43:2376
    local - generic Running tcp://172.25.2.34:2376 可以查看相应主机的环境变量 #docker-machine env local 把当前操作环境变更为指定主机 #eval “$(docker-machine env local)” 在docker-machine主机上操纵host #docker $(docker-machine config local) run -tid ubuntu /bin/bash 通过ssh连接到相应主机 # docker-machine ssh dm01 Docker Compose安装 docker compose用于同时启动多个容器,构成同一组应用环境,在这里用于支持swarm的安装。 curl -L https://github.com/docker/comp … ose-X 10X- uname -m > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose Docker Swarm集群安装 启用一台主机安装key value service,用于节点、主机发现等工作。 本例使用了consul的镜像,也可以使用如etcd、zookeeper等组件。 在dm01上启动一个consul服务: docker $(docker-machine config dm01) run -d
    -p “8500:8500”
    -h “consul”
    progrium/consul -server -bootstrap 创建swarm集群可以通过key value服务,也可以使用swarm cluster ID字符串创建。 创建swarm manager docker-machine create
    -d generic –generic-ip-address=172.25.2.44 –generic-ssh-user=root
    –swarm
    –swarm-master
    –swarm-discovery=”consul://$(docker-machine ip dm01):8500”
    –engine-opt=”cluster-store=consul://$(docker-machine ip dm01):8500”
    –engine-opt=”cluster-advertise=eth0:2376”
    c0-master 创建swarm node docker-machine create
    -d generic –generic-ip-address=172.25.2.45 –generic-ssh-user=root
    –swarm
    –swarm-discovery=”consul://$(docker-machine ip dm01):8500”
    –engine-opt=”cluster-store=consul://$(docker-machine ip dm01):8500”
    –engine-opt=”cluster-advertise=eth0:2376”
    c0-n1 docker-machine create
    -d generic –generic-ip-address=172.25.2.46 –generic-ssh-user=root
    –swarm
    –swarm-discovery=”consul://$(docker-machine ip dm01):8500”
    –engine-opt=”cluster-store=consul://$(docker-machine ip dm01):8500”
    –engine-opt=”cluster-advertise=eth0:2376”
    c0-n2 Overlay Network创建 设置环境变量 #eval “$(docker-machine env –swarm c0-master)” 可以用docker info看到现在的集群状况 #docker network create -d overlay myStack1 root@local:~# docker network ls NETWORK ID NAME DRIVER 685ed9e9f701 myStack1 overlay
    4c88e7c52a7c c0-n1/bridge bridge
    7fd49a4f6a64 c0-n1/none null
    8b2372139902 c0-n2/host host
    d998a91dcfea c0-n2/bridge bridge
    afd7a1190fb4 c0-n2/none null
    0f2b5dae67f7 c0-n1/host host
    a45b8049f8e6 c0-master/bridge bridge
    d13eed83f250 c0-master/none null
    364a592ae9ae c0-master/host host
    测试 在c0-n1上启动一个nginx,并加入myStack1网络 #docker run -itd –name=web –net=myStack1 –env=”constraint:node==c0-n1” nginx 在c0-n2上启动一个shell,同样加入myStack1网络 #docker run -ti –name=webtest –net=myStack1 –env=”constraint:node==c0-n2” ubuntu /bin/bash 在shell中将可以通过容器名或ip获取到web容器的状态 {{{#apt-get install wget wget -O- http://web }}} docker在官方文档上主推以swarm的方式创建cluster,相对比较复杂,但提供了整体Cluster的解决方案,可以将容器进行整体管理、推送、使用。



default_gateway 默认网关

Posted by 夏泽民

一个用于 TCP/IP 协议的配置项,是一个可直接到达的 IP 路由器的 IP 地址。配置默认网关可以在 IP 路由表中创建一个默认路径。 一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。 一台电脑的默认网关是不可以随随便便指定的,必须正确地指定,否则一台电脑就会将数据包发给不是网关的电脑,从而无法与其他网络的电脑通信。默认网关的设定有手动设置和自动设置两种方式 网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此。所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。 自动设置就是利用DHCP服务器来自动给网络中的电脑分配IP地址、子网掩码和默认网关。这样做的好处是一旦网络的默认网关发生了变化时,只要更改了DHCP服务器中默认网关的设置,那么网络中所有的电脑均获得了新的默认网关的IP地址。这种方法适用于网络规模较大、TCP/IP参数有可能变动的网络。 另外一种自动获得网关的办法是通过安装代理服务器软件(如MS Proxy)的客户端程序来自动获得,其原理和方法和DHCP有相似之处。 如果您有多个接口并为每个接口配置了一个默认网关,那么默认情况下 TCP/IP 将根据接口速度自动计算接口跃点数。此接口跃点数将成为所配置的默认网关的路由表中的默认路由的跃点数。最高速度的接口具有默认路由的最低跃点数。这样,只要在多个接口上配置多个默认网关,就会使用最快速度的接口将通信转发到其默认网关。 如果相同速度的多个接口具有相同的最低接口跃点数,那么根据绑定顺序,将使用第一个网络适配器的默认网关。如果第一个网络适配器不可用,则使用第二个网络适配器的默认网关。 在 TCP/IP 的早期版本中,多个默认网关都具有设置为1的默认路由跃点数,并且使用的默认网关将取决于接口顺序。有时,这会给确定TCP/IP协议正在使用哪一个默认网关带来一些困难。 默认情况下,接口跃点数的自动确定已经通过“Internet 协议(TCP/IP)”协议高级属性的“IP 设置”选项卡上的“自动跃点计数”复选框启用。 可以禁用接口跃点数的自动确定并键入新的接口跃点数。 网关技术 现行的IPV4的IP地址是32位的,根据头几位再划分为A、B、C三类地址;但由于INTERNET的迅猛发展,IP资源日渐枯竭,可供分配的IP地越来越少,跟一日千里的INTERNET发展严重冲突,在IPV6还远未能全面升级的情况下,惟有以代理服务器的方式,实行内部网地址跟公网地址进行转化而实现接入INTERNET。 中介作用的代理服务器就是一个网关,也就是这个网关带给现阶段的多媒体通讯系统无尽的烦恼。在IP资源可怜的情况下,惟有以网关甚至多层网关的方式接入宽带网, 因为多媒体通讯系统的协议如H.323等要进行业务的双方必须有一方有公网的IP地址,但是现在的宽带有几个用户能符合这个要求?microsoft的NETMEETING等等多媒体通讯系统就是处于这种尴尬的位置;跨网关成为头疼的难题。



bridge 网桥 Linux下的虚拟网桥

Posted by 夏泽民

网桥(Bridge)是早期的两端口二层网络设备,用来连接不同网段。网桥的两个端口分别有一条独立的交换信道,不是共享一条背板总线,可隔离冲突域。网桥比集线器(Hub)性能更好,集线器上各端口都是共享同一条背板总线的。后来,网桥被具有更多端口、同时也可隔离冲突域的交换机(Switch)所取代。 网桥(Bridge)像一个聪明的中继器。中继器从一个网络电缆里接收信号, 放大它们,将其送入下一个电缆。相比较而言,网桥对从关卡上传下来的信息更敏锐一些。网桥是一种对帧进行转发的技术,根据MAC分区块,可隔离碰撞。网桥将网络的多个网段在数据链路层连接起来。 网桥也叫桥接器,是连接两个局域网的一种存储/转发设备,它能将一个大的LAN分割为多个网段,或将两个以上的LAN互联为一个逻辑LAN,使LAN上的所有用户都可访问服务器。 扩展局域网最常见的方法是使用网桥。最简单的网桥有两个端口,复杂些的网桥可以有更多的端口。网桥的每个端口与一个网段相连。 网桥将两个相似的网络连接起来,并对网络数据的流通进行管理。它工 作于数据链路层,不但能扩展网络的距离或范围,而且可提高网络的性能、可靠性和安全性。网络1 和网络2 通过网桥连接后,网桥接收网络1 发送的数据包,检查数据包中的地址,如果地址属于网络1 ,它就将其放弃,相反,如果是网络2 的地址,它就继续发送给网络2.这样可利用网桥隔离信息,将同一个网络号划分成多个网段(属于同一个网络号),隔离出安全网段,防止其他网段内的用户非法访问。由于网络的分段,各网段相对独立(属于同一个网络号),一个网段的故障不会影响到另一个网段的运行。 网桥可以是专门硬件设备,也可以由计算机加装的网桥软件来实现,这时计算机上会安装多个网络适配器(网卡)。 网桥的功能在延长网络跨度上类似于中继器,然而它能提供智能化连接服务,即根据帧的终点地址处于哪一网段来进行转发和滤除。网桥对站点所处网段的了解是靠“自学习”实现的,有透明网桥、转换网桥、封装网桥、源路由选择网桥 网桥的存储和转发功能与中继器相比有优点也有缺点,其优点是: 使用网桥进行互连克服了物理限制,这意味着构成LAN 的数据站总数和网段数很容易扩充。 网桥纳入存储和转发功能可使其适应于连接使用不同MAC 协议的两个LAN,因而构成一个不同LAN 混连在一起的混合网络环境。 网桥的中继功能仅仅依赖于MAC 帧的地址,因而对高层协议完全透明。 网桥将一个较大的LAN 分成段,有利于改善可靠性、可用性和安全性。 网桥的主要缺点是:由于网桥在执行转发前先接收帧并进行缓冲,与中继器相比会引入更多时延。由于网桥不提供流控功能,因此在流量较大时有可能使其过载,从而造成帧的丢失。 网桥的优点多于缺点正是其广泛使用的原因。 网桥工作在数据链路层,将两个LAN连起来,根据MAC地址来转发帧,可以看作一个“低层的路由器”(路由器工作在网络层,根据网络地址如IP地址进行转发)。 远程网桥通过一个通常较慢的链路(如电话线)连接两个远程LAN,对本地网桥而言,性能比较重要,而对远程网桥而言,在长距离上可正常运行是更重要的。 网桥优点 1、过滤通信量。网桥可以使用局域网的一个网段上各工作站之间的信息量局限在本网段的范围内,而不会经过网桥溜到其他网段去。 2、扩大了物理范围,也增加了整个局域网上的工作站的最大数目。 3、可使用不同的物理层,可互连不同的局域网。 4、提高了可靠性。如果把较大的局域网分割成若干较小的局域网,并且每个小的局域网内部的信息量明显地高于网间的信息量,那么整个互连网络的性能就变得更好。 网桥缺点 1、由于网桥对接收的帧要先存储和查找站表,然后转发,这就增加了时延。 2、在MAC子层并没有流量控制功能。当网络上负荷很重时,可能因网桥缓冲区的存储空间不够而发生溢出,以致产生帧丢失的现象。 3、具有不同MAC子层的网段桥接再一起时,网桥在转发一个帧之前,必须修改帧的某些字段的内容,以适合另一个MAC子层的要求,增加时延。 4、网桥只适合于用户数不太多(不超过几百个)和信息量不太大的局域网,否则有时会产生较大的广播风暴。 [1] 特性 数据链路层互联的设备是网桥(bridge),在网络互联中它起到数据接收、地址过滤与数据转发的作用,用来实现多个网络系统之间的数据交换。 网桥的基本特征 1.网桥在数据链路层上实现局域网互连; 2.网桥能够互连两个采用不同数据链路层协议、不同传输介质与不同传输速率的网络 3.网桥以接收、存储、地址过滤与转发的方式实现互连的网络之间的通信; 4.网桥需要互连的网络在数据链路层以上采用相同的协议 5.网桥可以分隔两个网络之间的通信量,有利于改善互连网络的性能与安全性。



Search

Popular posts

Anything in here will be replaced on browsers that support the canvas element

Recent posts

This blog is maintained by 夏泽民

Get in touch with me at 465474307@qq.com

Subscribe to our mailing list

* indicates required