映射端口

docker单主机网络管理实践

試著忘記壹切 提交于 2019-12-01 18:55:52
容器作为应用,必然需要与外界通信,包括容器之间和外部网络。 Docker网络从覆盖范围分 单台主机上的容器网络★ 跨多台主机的容器网络 容器间通信 容器间通信的三种方式: IP Docker DNS Server joined IP通信 Docker安装时,默认会在主机上创建三个网络,bridge、host、none。可用 docker network ls 查看 none 就是只有loopback的网络,无其他任何网卡。容器创建时可以用 --network=none 来指定容器使用none网络 适应场景:一些安全性要求较高且不需联网的应用,如生成随机密码的容器,放在none里防止窃取。 host 类似于虚拟机中共享主机网络的选项,即使容器共享其所在主机的网络栈,该容器的网络配置和主机完全一样。 适应场景:如容器对网络传输效率较高要求,则可使用host网络。注意考虑端口冲突。 bridge 类似于虚拟机中的桥接模式,可理解为一个软件交换机。默认情况下,不指定 --network 参数,创建的容器都会挂到一个叫 docker0 的Linux bridge上。可以使用命令 brctl show 查看。 注:首次使用 brctl 命令,可能会提示安装。 brctl 命令在 Debian、Ubuntu 中可以使用 sudo apt-get install bridge-utils 来安装

外部访问容器,端口影射

試著忘記壹切 提交于 2019-12-01 12:56:51
外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。 当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。 使用 docker container ls 可以看到,本地主机的 49155 被映射到了容器的 5000 端口。此时访问本机的 49155 端口即可访问容器内 web 应用提供的界面。 $ docker run -d -P training/webapp python app.py $ docker container ls -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bc533791f3f5 training/webapp:latest python app.py 5 seconds ago Up 2 seconds 0.0.0.0:49155->5000/tcp nostalgic_morse 同样的,可以通过 docker logs 命令来查看应用的信息。 $ docker logs -f nostalgic_morse * Running on http://0.0.0.0:5000/ 10.0.2.2 - - [23/May/2014 20:16:31] "GET / HTTP

LINUX之FTP服务

廉价感情. 提交于 2019-12-01 12:22:07
1.FTP的连接类型 控制连接(持续连接) -> TCP21(命令信道) -> 用户收发FTP命令 数据连接(按需连接) -> TCP20(数据信道) -> 用于上传下载数据 2.FTP的工作模式 ftp模式分为主动模式(active mode)和被动模式(passive mode),ftp是tcp连接,所以要进行三次握手。 @See 1.1active和passive模式的配置: 在命令行输入vim /etc/vsftpd/vsftpd.conf: active mode: pasv_enable=NO (passive模式关闭)pasv_min_port=3000pasv_max_port=4000port_enable=YES (active模式开启)connect_from_port_20=YES (即默认情况下,FTP PORT主动模式进行数据传输时使用20端口(ftp-data)。YES使用,NO不使用。) passive mode: pasv_enable=YESpasv_min_port=30000 pasv_max_port=40000​设定在PASV模式下,建立数据传输所可以使用port范围的下界和上界,0 表示任意(1024 – 65535端口)。默认值为0。把端口范围设在比较高的一段范围内,比如30000 -40000。​ 在linux上,如果不配置pasv

公司局域网搭建

孤者浪人 提交于 2019-12-01 10:08:00
局域网(Local Area Network,简称LAN),用于将有限范围内(例如一个实验室、一层办公楼或者校园)的各种计算机、终端与外部设备互联成网。公司局域网怎么建立?首先来了解下不同规模企业网络组建方式。 10人以下企业网络组建 10人以下,规模比较小的公司一般对网络应用需求较低,由于人数少,基本也不存在划分VLAN(虚拟局域网)的需求,所以,选择一个多口的交换机就足够了。 10人-100人规模的企业,需要路由功能和子网划分 满足这类需求,一般比较合适的是路由器+交换机的配置。路由器提供内网和外网的链接和VLAN(虚拟局域网)的划分,以及各种防火墙和路由功能的配置。而交换机一头连到路由器上,作为一个子网,另一头链接子网中的各台终端。划分几个子网,则从路由连出几台交换机即可。组建构结构如下图:现在比较流行的公司局域网一般选择树形拓扑结构进行组建(星型拓扑的延伸)。树形拓扑结构有以下优点:1、易于故障的诊断; 2、易于网络的升级。 路由器和交换机的区别 传输速度 路由器比交换机慢,同一网线上网相互影响 交换机比较路由器快,同一网线各自上网互不受影响 使用范围 路由器是必需的网络设备,在路由器无法全部连接电脑的情况下,再加交换机。 单独交换机无法实现上互联网功能,交换机在局域网中起到拓展的作用 网络地址 路由器可以把一个IP分配给很多个主机使用,但IP都是相同的

网站搭建:从0到1搭建网站

…衆ロ難τιáo~ 提交于 2019-12-01 08:53:17
1 网站基本概念 网站说白了就是把一些东西放到哪里供其他人访问,并提供了一些可以交互的接口的地方。如果要实现这样一个地方首先,需要一个能放东西的地方这就是服务器。其次,我们要找到这个地方,然而有很多这样的地方,所以我们就需要给很多这样的地方标号,然后按照标号来找到这些地方,并访问。所以就有了IP地址,每个服务器都有一个唯一的IP地址,这样我们可以通过IP地址找到服务器。最后,IP地址都是一堆数字太难记了,有那么多服务器(相应的就有那么多IP地址),根据一串数字来找到服务器对于我们来说太麻烦了,根本记不住。如果有个名字就好了,比如百度的服务器可以用www.baidu.com来记那就好多了。所以就有了域名。为了我们能够用域名来找到服务器,我们需要把各个域名与服务器的IP地址映射起来来。每次当我们用域名来访问服务器的时候,就需要把域名转换为IP地址(这个过程就是DNS(Domain Name System)服务),然后通过IP地址找到服务器。 实际上这些概念实现上很复杂,分别在互联网七层协议中的不同层实现。它们之间层与层之间相互依赖。实际情况也比较复杂,比如从域名到IP的映射之间可以多个域名映射到同一个IP,这就是虚拟主机的概念。不过这些都是后话了。接下来对各个概念尽心详细的解释。 1.1 服务器概念 服务器(server),是提供计算机服务的设备。由于服务器需要响应服务请求,并进行处理

容器外网映射

独自空忆成欢 提交于 2019-12-01 08:16:39
/*--> */ /*--> */ 容器网络映射 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来 指定端口映射。 /*--> */ /*--> */ 当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端 口。 使用-P映射随机端口 ****理论上是49000~49900,但是服务器映射的端口是32769,原因待确认 [root@localhost opt]# docker -d -v /data:/var/www/html -P nginx:v2 root@localhost opt]# docker ps |grep nginx a42f85890719 nginx:v2 "nginx -g 'daemon of��" 12 minutes ago Up 12 minutes 0.0.0.0:32769->80/tcp hardcore_ramanujan 访问测试: 容器日志查看 [root@localhost opt]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a42f85890719 nginx:v2 "nginx -g 'daemon of��" 41 minutes ago Up 41

网络初级篇之VLAN(原理)

随声附和 提交于 2019-12-01 07:26:10
一、早期网络的问题   1、若某时刻有多个节点同时试图发送数据,极易产生冲突域,这样使得网络传输效率大大降低。   2、从一节点发送的数据都会被送到各个节点,极易形成广播域,这样会使得产生太多的广播流量而耗费大量带宽。   3、所有主机共用同一链路,无法保证信息的安全。 二、VLAN的产生   VLAN技术可以将一个物理局域网在逻辑上划分成多个广播域(多个VLAN)。VLAN技术部署在数据链路层,可以隔离二层流量。同一个VLAN内的主机共享一个广播域,它们之间可以直接进行数据交换;不同VLAN内的主机属于不同的广播域,不能直接进行数据的交换。从而提高了网络的安全性。 三、VLAN标签的格式    四、VLAN的链路类型   VLAN的链路类型有两种:Access链路与Trunk链路   接入链路(Access Link):终端设备与交换机所连接的链路。   干道链路(Trunk Link):交换机与交换机所连接的链路,是一条中继链路。 五、端口类型    1、Access端口   ①当它收到一个帧的时候,如果这个帧没有Tag标记,它就用自己的PVID给他打上标记。   ②它在发出一个帧时如果VID=PVID就去掉标记以保证传送给终端设备的帧没有被变动过。   ③Access端口发出的以太网数据帧中不带有VLAN标记。Access端口的特点是 只允许符合PVID(或者VID

Linux网桥端口的arp问题

爷,独闯天下 提交于 2019-12-01 04:55:02
Linux的brctl addif命令可以将一个接口加入到既有的网桥中,接下来,这个接口就成了brport,属于一个从属的接口,然而你还是可以看到它的,并且可以为它添加IP地址,然后route命令会显示出它的新添加的IP地址的链路层路由已经生效,种种迹象都让人觉得这个brport仍然保有IP语义,然而如果此时你使用该IP(Linux内核会做源地址选择)去访问同一网段的其它地址的话,就会发现,不通,反过来从其它同一网段的地址访问该地址也是不通的,原因何在?听我分解。 网络不通的话,一般第一步是通过抓包来分析,发现是在arp这一步出问题的,arp是IPv4的生命源,arp出了问题,什么都别扯了!懂Linux网络实现的家伙们其实早就知道为何出错了,因为作为从属接口brport,它的一切都要被网桥接口接管,包括arp,也就是说arp期望的接口信息都是关于网桥接口的而不是基于brport的。总的来说是这样的。 IP地址配置在物理接口brport上,因此链路层路由显示的出口设备就是该brport,发送数据的时候,arp逻辑会将目标IP-Mac映射记录在该brport门下,然而arp回来的时候,网桥接口接收了它,内核发现网桥接口门下没有任何待解决的arp请求,因此丢弃之,因此根本不可能从本机访问和配置在brport上IP在同网段的任何目标。反过来也一样,arp请求从其它机器过来,被网桥接口接收

以太网技术

戏子无情 提交于 2019-12-01 04:30:30
一. 交换机转发: 交换机收到数据帧,会存在三种行为: ① 泛洪 ② 转发 ③ 丢弃 1. 泛洪: 交换机会在以下情况泛洪数据帧: (1)当交换机收到广播帧、组播帧会泛洪 (2)当交换机收到一个单播帧,但是交换机的MAC地址表中没有对应的接口标识,此时会泛洪数据帧,称为“未知单播帧的泛洪” 注:交换机不会查看广播数据帧,而是直接将他泛洪到当前除接收接口外的所有的接口,所以针对而成协议数据报文,报文的目标MAC地址只能为组播。 2. 转发: (1)从一个接口收到一个单播帧,并且MAC地址表中有其对应的接口,会进行转发 3. 丢弃: (1)从一个接口收到一个单播帧,单播帧的目的MAC对应的接口正是接收到此单播帧的接口,此时会丢弃数据帧 二. ARP Address Resolution Protocol,地址解析协议,网络设备有数据要发送给另一台网络设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路层进行发送,数据帧必须要包含目的MAC地址,因此发送端还必须获取目的MAC地址。通过目的IP地址而获取目的MAC地址的过程是由ARP协议来实现的。ARP缓存表用来记录ARP信息,默认老化时间为1200S。 ARP直接封装在数据链路层之上,Type标识为0x0806,我们有时称ARP为2.5层协议。

TCP/IP和Socket的区别

百般思念 提交于 2019-12-01 03:18:30
要写网络程序就必须用Socket,这是程序员都知道的。而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会说,Socket编程基本就是listen,accept以及send,write等几个基本的操作。是的,就跟常见的文件操作一样,只要写过就一定知道。 对于网络编程,我们也言必称TCP/IP,似乎其它网络协议已经不存在了。对于TCP/IP,我们还知道TCP和UDP,前者可以保证数据的正确和可靠性,后者则允许数据丢失。最后,我们还知道,在建立连接前,必须知道对方的IP地址和端口号。除此,普通的程序员就不会知道太多了,很多时候这些知识已经够用了。最多,写服务程序的时候,会使用多线程来处理并发访问。 我们还知道如下几个事实: 1。一个指定的端口号不能被多个程序共用。比如,如果IIS占用了80端口,那么Apache就不能也用80端口了。 2。很多防火墙只允许特定目标端口的数据包通过。 3。服务程序在listen某个端口并accept某个连接请求后,会生成一个新的socket来对该请求进行处理。 于是,一个困惑了我很久的问题就产生了。如果一个socket创建后并与80端口绑定后,是否就意味着该socket占用了80端口呢?如果是这样的,那么当其accept一个请求后,生成的新的socket到底使用的是什么端口呢(我一直以为系统会默认给其分配一个空闲的端口号)