端口映射

华为USG防火墙nat环回配置

泄露秘密 提交于 2019-12-06 12:38:06
网络环境介绍: 公司内网有一台web服务器,地址是192.168.100.100,web服务端口为80,并且为这台web服务器申请了DNS A记录的域名解析服务,解析记录是公司出口ip地址100.100.100.100。在办公区网络环境里,还有内网192.168.10.0网段,需要通过申请的域名来访问公司内网的192.168.100.100的web服务。 做法是在防火墙的出口,做一条端口映射,100.100.100.100:80到192.168.100.100:80的端口映射。 问题来了,做好端口映射以后,其他外部网络通过域名访问公司的web服务是正常的,但是公司内网用户通过域名访问公司自己的web服务,却无法访问;而公司内网用户通过192.168.100.100:80私有地址访问,是正常的。这种情况,就是因为做好端口映射以后,访问web服务的流量在响应的时候流量没有回流到防火墙导致的。 原因分析: 如上图,假如是192.168.10.10通过申请的域名访问192.168.100.100的web服务。这里假设访问的源端口是10000,目标端口是80,数据包分析如下: C2主机发起web请求.因为通过域名访问的,DNS解析服务正常,那么访问目标就是100.100.100.100:80 192.168.10.10:10000--->100.100.100.100:80

使用Xdroid进行端口映射,出现adb server version (36) doesn't match this client (39); killing...的解决方案

送分小仙女□ 提交于 2019-12-06 02:09:40
第一反应就是adb冲突了,因为Xdroid这个产品看起来就不像是给开发人员用的模拟器,因为不能选择各种版本进行适配,所以肯定自带了一个adb。 whereis命令发现果然有两个adb,一个直接是安装在/usr/bin下了。 所以参考 这个 ,cd到命令具体位置,然后一个kill-server一个start-server就好了。 所以引发了一个问题,同名的命令,一个在/usr/bin,一个在/home下配置了环境变量,哪个会被执行。 具体参考了 这个文章 执行一个命令,可能会有四个步骤: 直接给出绝对路径或者相对路径,比如/usr/bin/adb就是执行bin下的adb 现在要执行之前安装的adb就就~/Android/Sdk/platform-tools/adb 或者经常使用的./xxxx 当前目录下的可执行文件,如果不加这个,说明不是路径,就会通过下面的步骤去找这个命令。 查找别名 alias xxx='xxx' 和 unalias xxx 判断是内部命令还是外部命令,内部命令是shell自带的,直接执行,一般都是放在/bin里,但放在/bin里的也不一定都是内部命令,可以通过type命令判断是否是内部命令。 如果是外部命令,系统就会通过环境变量来确定命令的位置,然后执行,如果找不到,就会报command not found,环境变量内容也比较多,遇到再学。 来源: https:

Docker基本操作命令

非 Y 不嫁゛ 提交于 2019-12-05 23:27:19
docker 常用命令如下 管理命令: container 管理容器 image 管理镜像 network 管理网络 node 管理Swarm节点 plugin 管理插件 secret 管理Docker secrets service 管理服务 stack 管理Docker stacks swarm 管理Swarm集群 system 查看系统信息 volume 管理卷 如:docker container ls 显示所有容器 普通命令: attach 进入一个运行的容器 build 从一个DockerFile构建镜像 commit 从容器创建一个镜像 cp 从容器和主机文件系统之间拷贝文件 create 创建一个容器 diff 检查容器文件系统上的更改 events 从服务器获取实时事件 exec 在正在运行的容器中运行命令 export 将容器的文件系统导出为tar存档 history 显示镜像的历史记录 images 查看镜像列表 import 从归档文件中创建镜像 info 显示系统范围的信息 inspect 返回Docker对象的低级信息 kill kill运行中的容器 load 从存档或者STDIN加载镜像 login 登陆docker镜像仓库 logout 退出docker镜像仓库 logs 获取一个容器的日志 pause 暂停一个或多个容器中的所有进程 port

docker网络

倖福魔咒の 提交于 2019-12-05 22:41:47
docker网络 Docker 允许通过外部访问容器或容器互联的方式来提供网络服务。 端口映射允许外部访问容器 --link 容器互联 容器桥接网络 1.通过--link容器通信,给test2添加一个hosts解析记录 docker run -d --name test2 --link test1 busybox /bin/sh -c "while true;do sleep 3600;done" test2可以ping通test1,反之不可以 但是--link是不推荐使用的,而是更强大的自定义docker网络链接容器 1.新建一个docker网络 docker network create -d bridge my-net -d 参数指定 Docker 网络类型,有 bridge overlay 2.连接容器 运行一个容器并连接到新建的 my-net 网络 $ docker run -it --rm --name busybox1 --network my-net busybox sh 打开新的终端,再运行一个容器并加入到 my-net 网络 $ docker run -it --rm --name busybox2 --network my-net busybox sh 再打开一个新的终端查看容器信息 $ docker container ls CONTAINER ID

docker容器启动后添加端口映射

拜拜、爱过 提交于 2019-12-05 20:29:08
概要 网上有许多人在查找关于容器启动后能否进行端口映射的问题。我曾经也问过度娘,很遗憾我没找到。本文就这个问题给出一个解决方法,旨在抛砖引玉。本文的思路是使用iptables的端口转发,这也是docker端口映射内部的实现机制,只不过我是显示地写出来罢了,为的就是让查找这个问题的人对docker的端口映射有一个直观的了解。 结论:容器启动后是可以添加端口映射的,但不建议手工添加,最好使用docker提供的功能。 步骤 创建两个容器并进行了端口映射,结果如图所示: 假如,我start一个容器,其内部IP为172.17.0.5,并在容器内部启动了80端口。 FORWARD规则链我们不用管它,docker已经帮我们写好了,我们只需要关心NAT中的几条链即可。 查看NAT表中的PREROUTING链 从上面可以看出,iptables将满足条件的数据都转发到了DOCKER链上去了。 查看NAT表中的DOCKER链 仿照上图,我们添加一条自己的映射规则,将宿主的8082端口映射到172.17.0.5的80端口上去,规则如下: iptables -t nat -A DOCKER ! -i docker0 -p tcp -m tcp --dport 8082 -j DNAT --to-destination 172.17.0.5:80 查看NAT表中的POSTROUTING链 仿照上图中的规则

Docker(一)概念与基础

久未见 提交于 2019-12-05 16:57:19
Docker 基础 为什么需要docker?在传统部署下,我们会遇到不同机器、不同依赖版本的兼容性等问题,解决此问题一般会消耗大量时间,并且在不同机器上均要执行统一环境的部署也是一个耗时较长的工作。除此之外、还包括例如管理Dev/Test/Prod等不同环境的成本。为了解决这些问题,Docker应运而出。 Docker 可以使用不同的Container 运行不同的组件(如node.js web server, MongoDB, Messaging System等),并且这些Containers 可以运行在同一个物理主机上,而相互之间无影响(也就是各有各的执行环境与依赖)。如: 通过上图我们可以看到,Docker Container 是共享的一个Kernel,且执行在Docker 层之上。Docker与Hypervisor(虚拟化中的控制进程)不一样的是:Docker并不是虚拟化,并不是在同一个底层硬件上运行不同的Kernel以及OS,它主要的目的是将应用容器化,使用同一套Kernel与OS执行不同的应用。而传统的虚拟化架构为: 这种虚拟化的架构会很大程度上使用硬件资源,且VM 镜像一般是GB级别的数据。而Docker Container 是一种轻量化的资源,大小也是MB 级别的量。这样可以使得Docker Container 启动更快,一般是秒级别。而VM 启动时间会长的多

docker的简单操作和端口映射

浪子不回头ぞ 提交于 2019-12-05 09:07:07
一:简介 Docker镜像 在Docker中容器是基于镜像启动的 镜像是启动容器的核心 镜像采用分层设计,最顶层为读写层 使用快照COW技术,确保底层不丢失 通过ifconfig(ip a)来查看docker0是否存在 docker已经启动成功 二:镜像的操作命令 注意:最后一组命令 docker tag 并不是把名称或者是标签改了,而是会新建一个镜像 上面是总结的一些常用命令 (1)以mysql为例,使用docker search命令 命令:docker search mysql 其中 NAME是指mysql的各个版本名字 DESCRIPTION是指版本说明 STARS是使用率 OFFICIAL是否为官方 查找其他软件包也是一样的操作比如:tomcat 命令:docker search tomcat #也是同样的 (2)然后使用pull命令下载一个镜像 命令:docker pull tomcat #下载tomcat镜像 图中看见pull complete 就是下载成功 我们执行docker images命令来看一下 命令:docker images 标题中:REPOSITORY是指镜像仓库 TAG是指版本(latest:最新的) IMAGE ID是指镜像ID号 CREATED是指创建的时间 SIZE是指内存大小 三:容器的操作命令 注意:还有一组命令 itd it itd

使用NAS123做端口映射外网访问MSQL可能出现的问题

扶醉桌前 提交于 2019-12-04 21:44:51
1. 映射端口,详见我之前转载的NAT123官网的文章。 2. 等待端口起来以后用数据库登陆软件 Toad for Mysql 登陆 举例: 192.168.1.119 数据库端口 3306 映射的端口为: nat.nat123.net:3315 那么我们在 Toad for Mysql 的设置如下: ********************* host: nat.nat123.net user: xxxx password: xxxx port: 3314 **************** 点击登陆就可以进入数据库了 登陆时有可能会出现bug Database :XXXXXXXX is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 原因显而易见,就是太多连接错误了。 官方说法是: 同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞; 临时解决的方法如下: 1、提高允许的max_connection_errors数量:   进入目标Mysql数据库查看max_connect_errors: show variables like '%max_connect_errors%';  

07端口映射

柔情痞子 提交于 2019-12-04 21:37:59
端口映射 一:端口映射实现容器访问---将容器内的应用服务的端口 映射 到 本地主机 1:从外部访问容器应用 [root@docker ~]# docker run -d -P training/webapp python app.py 72e1115e5f900b027992035912421b951a76465f12560dac19b14010dada3ac5 [root@docker ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 72e1115e5f90 training/webapp "python app.py" 10 seconds ago Up 6 seconds 0.0.0.0:32768->5000/tcp tender_thompson -P[大写]:随机映射一个端口到容器开放的网络端口 -p[小写]:指定端口映射,有以下四种格式 ▲ ip:hostPort:containerPort ▲ ip::containerPort ▲ hostPort:containerPort ▲ containerPort #访问宿主主机的32768即可访问容器内web信息 2:映射到指定地址的指定端口 [root@docker ~]# docker run -d -p 127.0.0

Docker 底层技术与端口映射

梦想的初衷 提交于 2019-12-04 17:47:19
容器底层实现技术     1.cgroup 实现了资源的限额:CPU,内存,硬盘     cgroup使用     docker run -d -m 100M httpd   2.namespace 实现了资源隔离     namespace 实现了容器间资源的隔离   3.unionfs 联合文件系统 Linux 使用了六种 namespace,分别对应六种资源:Mount、UTS、IPC、PID、Network 和 User    Mount namespace   Mount namespace 让容器拥有整个文件系统。   UTS namespace   简单的说,UTS namespace 让容器有自己的 hostname。 默认情况下,容器的 hostname 是它的短ID,可以通过 -h 或 --hostname 参数设置。   IPC namespace   IPC namespace 让容器拥有自己的共享内存和信号量(semaphore)来实现进程间通信,而不会与 host 和其他容器的 IPC 混在一起   PID namespace   容器在 host 中以进程的形式运行。容器内进程的 PID 不同于 host 中对应进程的 PID,容器中 PID=1 的进程当然也不是 host 的systemd进程。也就是说:容器拥有自己独立的 PID,这就是 PID