如何让ubuntu命令行配置ip的网络从指定端口进出?

您使用的是基于Ubuntu的系统,然后发现您无法连接到网络吗?您会惊讶于只需重新启动服务即可解决许多问题。
在本文中,我将介绍在Ubuntu或其他Linux发行版中重新启动网络的几种方法。您可以根据需要选择合适的方法。这些方法基本上分为两类:
通过命令行重新启动网络
如果您使用的是Ubuntu Server Edition,那么您已经在使用命令行终端。如果您使用的是桌面版,则可以使用快捷键Ctrl + Alt + T Ubuntu键盘快捷键打开命令行终端。
在Ubuntu中,有多个命令可以重新启动网络。这些命令中的一些或大多数也适用于在Debian或其他Linux发行版中重新启动网络。
这是通过命令行重新启动网络的最简单方法。它相当于通过图形界面重新启动网络(重新启动Network-Manager服务)。
Sudo服务网络管理器重启
此时,网络图标将消失一段时间,然后重新显示。
service命令只是这个方法的包装器(同样也是init.d系列脚本和Upstart相关命令的封装)。 systemctl命令具有比service命令更多的功能。通常我更喜欢使用此命令。
此时,网络图标将消失一段时间。如果您想了解systemctl的其他选项,可以参考man帮助文档。
这是Linux上的另一个可以管理您的网络的工具。这是一个强大而有用的工具。许多系统管理员喜欢使用此工具,因为它非常易于使用。
此方法有两个步骤:关闭网络,然后打开网络。
这将关闭网络,网络图标将消失。接下来,再次打开网络:Sudo nmcli网络上
您可以通过man帮助文档了解有关nmcli的更多信息。
这两个命令直接操作网络端口,检查网络端口是否可以发送和接收数据包。这是Linux中最熟悉的网络命令之一。
使用ifdown关闭所有网络端口,然后使用ifup重新启用网络端口。
建议的做法是一起使用这两个命令。
注意:此方法不会导致网络图标从系统托盘中消失。此外,各种网络连接都被破坏了。
这是系统管理员常用的另一种方法。它是一个文本菜单工具,用于管理命令行终端中的网络。
注意:在nmtui中,您可以使用向上和向下箭头键选择选项。
Nmtui菜单选择“激活连接”
按Enter键打开“连接”菜单。
接下来,选择前面带星号(*)的网络。在这个例子中,它是MGEO72。
在nmtui连接菜单中选择您的连接。
按Enter键。这将“禁用”您的网络连接。
Nmtui连接菜单没有活动连接
按Enter键。这将重新激活所选的网络连接。
按两次Tab键选择“返回”:
在nmtui连接菜单中选择“返回”。
退出界面并返回命令行终端。
通过这种方式,您已成功重新启动网络。
通过图形界面重新启动网络显然,这是Ubuntu桌面用户重启网络的最简单方法。如果此方法不起作用,您可以尝试使用上面提到的命令行重新启动网络。
首先,查看顶部状态栏。您将在系统托盘中找到一个网络图标(因为我使用的是Wi-Fi,因此这里是一个Wi-Fi图标)。
接下来,单击图标(您还可以单击音量图标或电池图标)。打开菜单。选择“关闭”以关闭网络。
在Ubuntu中重新启动网络
网络图标将在状态栏中消失,这表示您已成功关闭网络。
再次单击系统托盘以重新打开菜单,然后选择“打开”以重新打开网络。
在Ubuntu中重新启动网络
恭喜!您现在已重新启动网络。
其他提示:刷新可用网络列表
如果您已连接到网络但想要连接到另一个网络,那么如何刷新WiFi列表并查找其他可用网络?让我告诉你一些事情。
Ubuntu没有直接“刷新WiFi网络”的选项,它有点隐藏。
您需要再次打开配置菜单,然后单击“选择网络”。
选择适当的网络以修改您的WiFi连接。
您无法立即看到可用的无线网络列表。打开网络列表后,显示其他可用的无线网络大约需要5秒钟。
等待大约5秒钟以查看其他可用网络。
现在,您可以选择要连接的网络,然后单击“连接”。这个完成了。

Docker 包括三个基本概念

  • 理解了这三个概念,就理解了 Docker 的整个生命周期。

Docker 镜像就是一个只读的模板。
例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器。
Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层

Docker 利用容器来运行应用。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
*注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。

仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。 国内的公开仓库包括 Docker Pool等,可以提供大陆用户更稳定快速的访问。
当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。
注:Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。

EPEL 是yum的一个软件源,里面包含了许多基本源里没有的软件。(安装需要连接网络)
安装了这个源后,就可以使用yum来安装 docker了。
安装过程需要交互,输入“y”按回车就可以了。



通过下面命令来验证doecker是否安装成功:
出现下面类似内容,则表示安装成功:


在列出信息中,可以看到几个字段信息

这个文件中定义了很多方便使用 Docker 的命令,例如 docker-pid 可以获取某个容器的 PID;
而 docker-enter 可以进入容器或直接在容器内执行命令。
下面给出一个完整的例子:

如果要导出本地某个容器,可以使用 docker export 命令,导入某个容器快照使用 docker import命令:
大部分时候,并不需要严格区分这两者的概念。

大部分需求,都可以通过在 Docker Hub 中直接下载镜像来实现。
用户无需登录即可通过 docker search 命令来查找官方仓库中的镜像,并利用 docker pull 命令来将它下载到本地。
例如以 centos 为关键词进行搜索:


可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、星级(表示该镜像的受欢迎程度)、是否官方创建、是否自动创建。
官方的镜像说明是官方项目组创建和维护的,automated 资源允许用户验证镜像的来源和内容。
根据是否是官方提供,可将镜像资源分为两类。
一种是类似 centos 这样的基础镜像,被称为基础或根镜像。这些基础镜像是由 Docker 公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字。
还有一种类型,比如 tianon/centos 镜像,它是由 Docker 的用户创建并维护的,往往带有用户名称前缀。
可以通过前缀 user_name/ 来指定使用某个用户提供的镜像,比如 tianon 用户。
另外,在查找的时候通过 -s N 参数可以指定仅显示评价为 N 星以上的镜像。
下载官方 centos 镜像到本地:

本节介绍如何使用本地仓库。docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。

有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。

容器的访问控制,主要通过 Linux 上的 iptables 防火墙来进行管理和实现。iptables 是 Linux 上默认的防火墙软件,在大部分发行版中都自带。

容器要想访问外部网络,需要本地系统的转发支持。在Linux 系统中,检查转发是否打开。

  1. #如果为 0,说明没有开启转发,则需要手动打开。

容器之间相互访问,需要两方面的支持。

  • 容器的网络拓扑是否已经互联。默认情况下,所有容器都会被连接到 docker0 网桥上。
  • 本地系统的防火墙软件 -- iptables 是否允许通过。

映射容器端口到宿主主机的实现

默认情况下,容器可以主动访问到外部网络的连接,但是外部网络无法访问到容器。

容器所有到外部网络的连接,源地址都会被NAT成本地系统的IP地址。这是使用 iptables 的源地址伪装操作实现的。
查看主机的 NAT 规则。

其中,上述规则将所有源地址在 172.17.0.0/16 网段,目标地址为其他网段(外部网络)的流量动态伪装为从系统网卡发出。
MASQUERADE 跟传统 SNAT 的好处是它能动态从网卡获取地址。

容器允许外部访问,可以在 docker run 时候通过 -p 或 -P 参数来启用。
不管用那种办法,其实也是在本地的 iptable 的 nat 表中添加相应的规则。

  • 这里的规则映射了 0.0.0.0,意味着将接受主机来自所有接口的流量。

它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。
Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信,它还给出了 MTU(接口允许接收的最大传输单元),
通常是 1500 Bytes,或宿主主机网络路由上支持的默认值。这些值都可以在服务启动的时候进行配置。

除了默认的 docker0 网桥,用户也可以指定网桥来连接各个容器。
如果服务已经运行,那需要先停止服务,并删除旧的网桥。

  1. 查看确认网桥创建并启动。

配置 Docker 服务,默认桥接到创建的网桥上。

启动 Docker 服务。 新建一个容器,可以看到它已经桥接到了 bridge0 上。
可以继续用 brctl show 命令查看桥接的信息。
另外,在容器中可以使用 ip addr 和 ip route 命令来查看 IP 地址配置和路由信息。

实例:创建一个点到点的连接

默认情况下,Docker 会将所有容器连接到由 docker0 提供的虚拟子网中。
用户有时候需要两个容器之间可以直连通信,而不用通过主机网桥进行桥接。
解决办法很简单:创建一对 peer 接口,分别放到两个容器中,配置成点到点链路类型即可。
首先启动 2 个容器:

找到进程号,然后创建网络名字空间的跟踪文件。

创建一对 peer 接口,然后配置路由

现在这 2 个容器就可以相互 ping 通,并成功建立连接。点到点链路不需要子网和子网掩码。
此外,也可以不指定 --net=none 来创建点到点链路。这样容器还可以通过原先的网络来通信。
利用类似的办法,可以创建一个只跟主机通信的容器。但是一般情况下,更推荐使用 --icc=false 来关闭容器之间的通信。

多台物理主机之间的容器互联

标准化开发测试和生产环境

Docker 是个伟大的项目,它彻底释放了虚拟化的威力,极大降低了云计算资源供应的成本,同时让应用的分发、
测试、部署和分发都变得前所未有的高效和轻松!本书既适用于具备基础 Linux 知识的 Docker 初学者,也希望可供理解原理和实现的高级用户参考。同时,书中给出的实践案例,可供在进行实际部署时借鉴。前六章为基础内容,供用户理解 Docker 的基本概念和操作;7 ~ 9 章介绍一些高级操作;第 10 章给出典型的应用场景和实践案例;11 ~ 13 章介绍关于 Docker 实现的相关技术。14 ~ 17章介绍相关的一些开源项目。

一个系统管理员可能会同时管理着多台服务器,这些服务器也许会放在不同的地方。要亲自一台一台的去访问来管理它们显然不是最好的方法,通过远程控制的方法应该是最有效的。远程访问最通用的一款应用程序就是 SSH(什么?你还用telnet?....$%@%&W@$##)。

SSH(全称 Secure Shell)是一种加密的网络协议。使用该协议的数据将被加密,如果在传输中间数据泄漏,也可以确保没有人能读取出有用信息。要使用 SSH,目标机器应该安装 SSH 服务端应用程序,因为 SSH 是基于客户-服务模式的。 当你想安全的远程连接到主机,可中间的网络(比如因特网)并不安全,通常这种情况下就会使用 SSH。

的 Linux 系统默认已经安装了 SSH。如果碰巧你的机器没装(译注:我能吐槽么?没有不装ssh的Linux服务器吧,不过,大家要记得升级你的ssh服务器),我们可以手工来安装一下。最简单的方式就是使用 Linux 包管理器。

SSH 一旦安装上,我们就可以在终端下输入 ssh 来检查下安装的是否正常。

提供了许多可使用的选项。这篇文章会介绍一些我们在日常操作中经常使用的选项。

通常使用 SSH 的方式就是不加任何选项参数,仅仅输入 "ssh"。下面是示例:

第一次连接目标主机时,ssh 会让你确认目标主机的真实性。如果你回答的是 NO,SSH 将不会继续连接,只有回答 Yes 才会继续(译注:会加入RSA key的指纹作为记录,如果下次连接发现指纹变化,会提示你)。

下一次再登陆此主机时,SSH 就不会提示确认消息了。对此主机的真实验证信息已经默认保存在每个用户的 /home/user/.ssh 文件里。

默认的,ssh 会尝试用当前用户作为用户名来连接。在上面的示例命令中,ssh 会尝试用用户名叫 pungki 的用户身份来登入服务器,这是因为用户 pungki 正在客户机上使用 ssh 客户端软件。

假如目标主机上没有叫 pungki 的用户呢?这时你就必须提供一个目标主机上存在的用户名。从一开始就要指定用户名的,可以使用 -l 选项参数。

SSH 默认使用的端口号是 22。大多现代的 Linux 系统 22 端口都是开放的。如果你运行 ssh 程序而没有指定端口号,它直接就是通过 22 端口发送请求的。

一些系统管理员会改变 SSH 的默认端口号。让我们试试,现在端口号是 1234.要连上那主机,就要使用 -p 选项,后面在加上 SSH 端口号。

把它换成其他的端口号,比如上面示例的 1234 端口,然后重启 SSH 服务。

4.对所有数据请求压缩

有了这个选项,所有通过 SSH 发送或接收的数据将会被压缩,并且任然是加密的。要使用 SSH 的压缩功能,使用 -C 选项。

如果你的连网速度很慢的话,比如用 modem 上网,这个选项非常有用。但如果你使用的是像 LAN 或其它更高级网络的话,压缩反而会降低你的传输速度。可以使用 -o 选项加上压缩级别参数来控制压缩的级别,但这个选项仅仅只在 SSH-1 下起作用。

5. 指定一个加密算法

因为某些原因,我们想要追踪调试我们建立的 SSH 连接情况。SSH 提供的 -v 选项参数正是为此而设的。

如果你的客户端有多于两个以上的 IP 地址,你就不可能分得清楚在使用哪一个 IP 连接到 SSH 服务器。

为了解决这种情况,我们可以使用 -b 选项来指定一个IP 地址。这个 IP 将会被使用做建立连接的源地址。

服务端,我们可以使用 netstat 命令来检查到服务的连接是否建立。可以看到 IP 为 192.168.0.200 的连接已经建立。

8. 使用其他配置文件

默认情况下,ssh 会使用位于 /etc/ssh/ssh_config 的配置文件。这个配置文件作用于系统的所有用户。但你想要为特定的用户指定特殊的设置的话,可以把配置放入 ~/.ssh/config 文件中。如果此文件不存在,可以手工创建一个。

要使用指定的配置文件,可以使用 -F 选项。

某些时候,你可能想把服务端的 X11 应用程序显示到客户端计算机上,SSH 提供了 -X 选项。但要启用这功能,我们需要做些准备,下面是它的设置:

来检查,你应该可以看到向如下所示的

随后就可以运行应用了,仅仅只能输入应用程序的命令。让我们试试,比如想运行 xclock 程序,输入:

它就运行起来了,xclock 确实是运行在远端系统的,但它在你的本地系统里显示了。

如果你敢肯定你的网络是安全的,那么你可以使用可信任的 X11 转发机制。这意味着远程的 X11 客户端可以完全的访问源 X11 显示内容。要使用此功能,可以使用 -Y 选项。

我们相信 SSH 的使用范围非常之广。SSH 给用户提供了网络连接的极大安全性和灵活性。通常我们都会输入 man sshman ssh_config 来显示它的用户手册及查看更多的细节。

(译注补充:建议使用ssh的协议版本2,因此请修改 ssh_config 文件的 Protocol 字段为:2,而将对协议1的支持取消。)


本文由 原创翻译, 荣誉推出


我要回帖

更多关于 ubuntu命令行配置ip 的文章

 

随机推荐