随着网络的发展,公网IP地址的需求与日俱增。为了缓解公网IP地址的不足,并且保护公司内部服务器的私网地址,可以使用NAT(网络地址转换)技术将私网地址转化成公网地址,以缓解IP地址的不足,并且隐藏内部服务器的私网地址。 NAT通过将内部服务器的私网IP地址转换成全球唯一的公网IP地址,是内部网络可以连接到互联网等外部网络上。 NAT的实现方式有三种: 静态NAT(static translation) 动态转换(dynamic translation) PAT(port-base address translation,基于端口的地址转换) 其中常用到的是静态转换和PAT,动态转换不太实用。因为动态转换的话,我们拥有的公网IP地址要和局域网要上网的ip地址一样多。这是不现实的。所以这里就不说动态ip了。 静态转换是一对一(一个公网IP地址对应一个私网IP地址)、一对多(一个公网IP地址对应多个私网IP地址)的转换,主要是用于我们内部需要让外网客户访问的服务器会做静态转换,简单的静态转换只能一对一,可以通过NAT端口映射来实现一对多的转换。 一对一转换的实现过程如下: Router(config)#ip nat inside source static 192.168.1.1 20.0.0.2 #将内网ip地址192.168.1.1在与外网通信时转换为20.0.0.2
NAT(net address translation)网络地址转换,功能是为了实现内网访问公网的。我们知道,IPv4由于可用ip数量有限,不能满足于全球主机网络通信的需求,所以人们设计了内、公网分类的方式。即有些IP仅允许在企业内部局域网使用,不同企业的局域网允许使用相同的IP段。这些IP我们称之为内网IP,内网IP共有以下三大段:
在上一篇文章中我们介绍了基于ipvs的cluster ip类型service的实现原理,本质上是在iptable的PREROUTING chain以及相关target中利用ipset来匹配cluster ip,完成对即将做MASQUERADE伪装的items的mark标记,同时结合ipset也减少了iptable中的entry数量。另外在host network namespace里创建kube-ipvs0网络设备,绑定所有cluster ip,保证网络数据包可以进入INPUT chain。在INPUT chain中ipvs利用映射规则(可由ipvsadm查看该规则)完成对cluster ip的DNAT和目标pod endpoints选择的负载均衡,然后直接把数据送入POSTROUTING chain。当数据包进入POSTROUTING chain,经过相关的iptable target,匹配在PREROUTING chain中的mark标记,完成MASQUERADE伪装(SNAT host的ip地址)。最后数据包根据host network namespace的路由表做下一跳路由选择。在这里我们主要介绍基于ipvs的node port类型service的实现原理,如果对上一篇文章内容有所理解,那么这里也比较简单。
show version 查看版本及引导信息 show running-config 查看运行设置 show startup-config 查看开机设置 show interface g0/1 显示端口信息 show ip router 显示路由信息 show clock 查看系统时钟 show log 查看日志 show interface counters 查看接口流量 show interface description 查看端口的连接状态与描述 show interface status 查看端口的链接状态、所属vlan以及速率双工 show cdp neighbors 查看CDP邻居 show processes cpu 查看设备CPU使用率 show vlan br 查看vlan数据库 show ip int brief //查看所有端口状况 show int des //查看所有端口的描述 show int f0/1 //查看f0/1接口状态 show run int f0/1 //查看f0/1配置状况 show run int valn 180 //查看Vlan 的配置状态 show vtp stauts //查看vtp 的状态 show clock //查看交换机当前的时间 show ntp stauts //查看ntp 是否同步 show ip ssh //查看SSH配置
在之前文章中我们介绍了基于iptable方式实现的k8s集群中cluster ip类型和node port类型service的负载均衡。其本质上是当网络数据包从pod的network namespace中通过linux veth pair设备进入到host宿主中的network namespace时,经过iptable一系列的NAT转换,把service的cluster ip和端口DNAT成pod的ip和端口。同时leverage linux iptable的random模块,实现了对pod的负载均衡,然后再交由host对目标pod的路由策略来实现将数据包发往pod。当然,这一切都是在linux内核空间实现的,和应用程序的用户空间没有关系。在这里我们主要介绍基于ipvs的cluster ip类型service的实现原理。如果对于ipvs不熟悉的同学可以浏览一下网站http://www.linuxvirtualserver.org/,大名鼎鼎的LVS负载均衡就是基于ipvs来实现的。
IP 地址分为公网地址和私有地址。公网地址有 IANA 统一分配,用于连接互联网;私有地址可以自由分配,用于私有网络内部通信。
R1(config-if)#do show run int f0/0 //查看某一个接口的配置
在上一篇文章中我们主要介绍了集群内cluster ip service的实现原理,当然是基于iptable的nat的模式,也就是说利用OS的网络内核来完成负载均衡。在这里我们主要介绍node port的实现原理,当然我们这里的k8s容器网络还是基于iptable的,不是基于ipvs的。我们以之前文章中的nginx-ingress-controller-service为实际例子来介绍,nginx-ingress-controller-service在以前文章里我们以node port类型的service暴露给外界提供服务。
docker/Docker如何查看宿主机到容器端口映射关系 背景 前些天的时候, 在定位问题时发现docker emqx 连接websocket (8083)端口出现异常. 经过很长时间定位, 才
当我们运行一个React Native项目的时候,React Native会启动一个默认端口号为8081的本地服务,该8081的服务就是React Native项目的一个本地服务器,用于提供JSBundle包和一些静态资源。这一切都是React Native帮开发者配置好的,一切都是那么简便,但如果出现如下几种情况,那么你需要认真阅读本文了:
PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。
随着Internet的发展和网络应用的增多,IPv4地址枯竭已经成为制约网络发展的瓶颈。尽管IPv6可以从根本上解决IPv4地址空间不足的问题,但目前众多的网络设备和网络应用仍是基于IPv4的,因此在IPv6广泛应用之前,一些过渡技术的使用是解决这个问题的主要技术手段。
开启 NAT 转发之后,只要本机可以上网,不论是单网卡还是多网卡,局域网内的其他机器可以将默认网关设置为已开启 NAT 转发的服务器 IP ,即可实现上网。
告诉大家一个好消息,为大家精心准备的React Native视频教程发布了,大家现可以看视频学React Native了。 当我们运行一个React Native项目的时候,React Native会启动一个默认端口号为8081的本地服务,该8081的服务就是React Native项目的一个本地服务器,用于提供JSBundle包和一些静态资源。这一切都是React Native帮开发者配置好的,一切都是那么简便,但如果出现如下几种情况,那么你需要认真阅读本文了: 8081端口被其他程序占用(比如杀毒
firewall-cmd 是 firewalld的字符界面管理工具,firewalld是centos7的一大特性,最大的好处有两个:支持动态更新,不用重启服务;第二个就是加入了防火墙的“zone”概念。
firewall-cmd Linux上新用的防火墙软件,跟iptables差不多的工具
掌握ACL在企业网络中的应用;掌握ACL的工作原理;掌握ACL的配置;掌握NAT的工作原理;掌握NAT的基本配置。
现在,我们的两块网卡都是在public区域中。下面我们来给public区域配置规则,让其允许某些服务被访问。
在上一篇文章【利用腾讯云主机+SSH远程端口转发实现内网穿透】中使用SecureCRT进行远程端口转发,但是转发到云主机(外网)服务器后,发现从外网访问连接转发后的端口出现报错,无法正常访问
ip address 192.168.3.100 255.255.255.0 配置IP地址
路由模式:如果华为防火墙连接网络的接口配置IP地址,则认为防火墙工作在路由模式下。
1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。 下面是命令实现:
需要确保kubernetes集群已经被dynatrace监控,即已经安装了dynatrace组件比如activegate、oneagent等。
1.1.1.3. [R2-g0/0/1]ospf authentication-mode simple huawei 6
运维时,你可能会遇到这样的问题,那就是Docker 容器已经运行的情况下,我希望宿主机外的程序,比如数据库客户端,能够连接容器内部的端口,如数据库端口。
执行命令:mvn clean deploy -Dmaven.test.skip=true 推送 jar 到私服:
在Centos7版本之后,防火墙应用已经由从前的iptables转变为firewall这款应用了。但是,当今绝大多数的Linux版本(特别是企业中)还是使用的6.x以下的Centos版本,所以对iptables的了解还是很有必要的。此外,需要说明的是iptables自身并不具备防火墙的功能,它需要通过内核netfilter(网络过滤器)来实现,与firewalld一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样,他们都只是一个外壳应用罢了。打个比方,就好像有一本书,同样的内容,一种是纸质的,另一种是电子的,我们翻阅它的方式不同,给它做笔记的方式不同,但是内容(内核)一样。
保护内部主机和内部网络的安全,通过过滤的方式对网络层的ip地址和端口进行处理,不同的硬件或者软件平台上存在不同的防火墙,例如硬件防火墙ASA, Linux上的软件防火墙iptables,window上的防火墙ISA。
我们在使用 docker run 创建 Docker 容器时,可以用--net 选项指定容器的网络模式,Docker 有以下 4 种网络模式:
查看状态 systemctl status firewalld / firewall-cmd --state
超级用户终端登陆交换机 SYS进入 //sys进入系统视图 输入以下命令 # sysname lyz_xmc_bgl //sysname 系统名称 # super password level 3 cipher pass //superpassword 管理员密码,level3权限为3级,cipher输入密码为隐藏,缺省状态为可见,pass密码字符
反弹shell(reverse shell),就是控制端监听在某TCP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。
想通过防火墙打开8080端口登录tomcat却发现提示 /etc/rc.d/init.d/iptable.找不到文件, 最后发现因为于CentOS7不用iptables执行命令了,所以应用firewall相关命令控制防火墙
同行的客户,用的华为防火墙,说是端口映射不生效,NAT做了,安全策略也做了,而且有命中计数,但是实际上就是无法通信。 远程登录防火墙分析问题,查看“服务器映射”,配置正确;查看安全策略,配置正确,且测试时,有命中计数,进一步确认配置正确,按理说应该没问题才对。 在外网用telnet命令测试端口,无响应,说明端口映射失败。 由于多条运营商链路接入防火墙,此时怀疑进出路径不一致导致该问题,查看NAT策略时显示,VLAN15确实是从对就的链路出去的,与端口映射中的外网IP一致,奇怪。。。 临时找台笔记本,接入VLAN15,tracert -d 外网任意网址,结果显示,并未从NAT策略中指定的链路出去,这就是问题所在了。 打开“策略路由icon”,问题果然在这里,有条策略路由指明VLAN15的出口为另外一条拨号的宽带,删除其中的VLAN15后,问题解决,一共5分钟[呲牙]
netfilter/iptables(简称 iptables)组成 Linux 平台下的包过滤防火墙
在服务器本地可以使用命令行参数连接并且进行发布订阅操作,但是在外网环境就不可以了,SpringBoot连接报错:
#清除预设表filter中的所有规则链的规则 iptables -F #清除预设表filter中使用者自定链中的规则 iptables -X #保存iptables配置 service iptables save #重启iptables服务 service iptables restart #查看iptables规则 iptables -L -n #查看iptables规则文件 cat /etc/sysconfig/iptables #设定预设规则 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP #开启22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT #关闭22端口 iptables -D INPUT -p tcp --dport 22 -j ACCEPT #开启常用端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j ACCEPT #iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT #iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT #iptables -A INPUT -p tcp --dport 20 -j ACCEPT #iptables -A INPUT -p tcp --dport 21 -j ACCEPT #iptables -A INPUT -p tcp --dport 10000 -j ACCEPT #iptables -A INPUT -p tcp --dport 25 -j ACCEPT #iptables -A INPUT -p tcp --dport 110 -j ACCEPT #iptables -A INPUT -p udp --dport 53 -j ACCEPT #允许ping iptables -A INPUT -p icmp -j ACCEPT #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -p icmp -j ACCEPT #允许loopback iptables -A INPUT -i lo -p all -j ACCEPT #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -o lo -p all -j ACCEPT #屏蔽指定ip #iptables -A INPUT -p tcp -s 192.168.10.1 -j DROP #减少不安全的端口连接 #iptables -A OUTPUT -p tcp --sport 31337 -j DROP #iptables -A OUTPUT -p tcp --dport 31337 -j DROP #允许某个IP远程连接 #iptables -A INPUT -s 192.168.10.1 -p tcp --dport 22 -j ACCEPT #允许某个网段的IP远程连接 iptables -A INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT #允许指定网段通过、指定网口通过SSH连接本机 #iptables -A INPUT -i eth0 -p tcp -s 192.168.10.0/24 --dport 22 -m state --state NEW,ESTABLESHED -j ACCEPT #iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT #iptables -A INPUT -i eth0 -p tcp -s 192.168.10.0/24 --dport 22 -m state --state ESTABLESHED -j ACCEPT #iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT #开启转发功能 #iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT #iptables -A FORWARD -i eth1
计算机命令: PCA login: root :使用root用户 password: linux :口令是linux shutdown -h now :同init 0 关机 logout login ifconfig :显示IP地址
#清除预设表filter中的所有规则链的规则 iptables -F #清除预设表filter中使用者自定链中的规则 iptables -X #保存iptables配置 service iptables save #重启iptables服务 service iptables restart #查看iptables规则 iptables -L -n #查看iptables规则文件 cat /etc/sysconfig/iptables #设定预设规则 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP #开启22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT #关闭22端口 iptables -D INPUT -p tcp --dport 22 -j ACCEPT #开启常用端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j ACCEPT #iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT #iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT #iptables -A INPUT -p tcp --dport 20 -j ACCEPT #iptables -A INPUT -p tcp --dport 21 -j ACCEPT #iptables -A INPUT -p tcp --dport 10000 -j ACCEPT #iptables -A INPUT -p tcp --dport 25 -j ACCEPT #iptables -A INPUT -p tcp --dport 110 -j ACCEPT #iptables -A INPUT -p udp --dport 53 -j ACCEPT #允许ping iptables -A INPUT -p icmp -j ACCEPT #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -p icmp -j ACCEPT #允许loopback iptables -A INPUT -i lo -p all -j ACCEPT #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -o lo -p all -j ACCEPT #屏蔽指定ip #iptables -A INPUT -p tcp -s 192.168.10.1 -j DROP #减少不安全的端口连接 #iptables -A OUTPUT -p tcp --sport 31337 -j DROP #iptables -A OUTPUT -p tcp --dport 31337 -j DROP #允许某个IP远程连接 #iptables -A INPUT -s 192.168.10.1 -p tcp --dport 22 -j ACCEPT #允许某个网段的IP远程连接 iptables -A INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT #允许指定网段通过、指定网口通过SSH连接本机 #iptables -A INPUT -i eth0 -p tcp -s 192.168.10.0/24 --dport 22 -m state --state NEW,ESTABLESHED -j ACCEPT #iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT #iptables -A INPUT -i eth0 -p tcp -s 192.168.10.0/24 --dport 22 -m state --state ESTABLESHED -j ACCEPT #iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT #开启转发功能 #iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT #iptables -A FORWARD -i eth1
#清除预设表filter中的所有规则链的规则 iptables -F #清除预设表filter中使用者自定链中的规则 iptables -X #保存iptables配置 service iptables save #重启iptables服务 service iptables restart #查看iptables规则 iptables -L -n #查看iptables规则文件 cat /etc/sysconfig/iptables #设定预设规则 ip
防火墙分类 (一)、包过滤防火墙。 数据包过滤(packet Filtering)技术是在网络层对数据包进行选择,选择的依据是系统内设置的过滤逻辑,称为访问控制表(access control lable,ACL)。通过检查数据流中每个数据包的源地址和目的地址,所用的端口号和协议状态等因素,或他们的组合来确定是 否允许该数据包通过包过滤防火墙的优点是它对用户来说是透明的,处理速度快且易于维护。缺点是:非法访问一旦突破防火墙,即可对主机上的软件和配置漏洞进行攻击;数据包的源 地址、目的地址和IP的端口号都在数据包的头部,可以很轻易地伪造。“IP地址欺骗”是黑客针对该类型防火墙比较常用的攻击手段。 (二)、代理服务型防火墙 代理服务(proxy service)也称链路级网关或TCP通道。它是针对数据包过滤和应用网关技术存在的缺点而引入的防火墙技术,其特点是将所有跨跃防火墙的网络通信链路 分为两段。当代理服务器接收到用户对某个站点的访问请求后就会检查请求是否符合控制规则。如果规则允许用户访问该站点,代理服务器就会替用户去那个站点取 回所需的信息,再转发给用户,内外网用户的访问都是通过代理服务器上的“链接”来实现的,从而起到隔离防火墙内外计算机系统的作用。
如果我们在虚拟机内搭建好服务器后,希望可以在局域网内的设备上都能访问到这个虚拟服务器,就可以参照以下步骤来操作。其中包括了很多遇到的坑。先说说我的环境是
带着我们就这些问题,我们来学习一下docker的网络模型,最后我会通过抓包的方式,给大家演示一下数据包在容器和宿主机之间的转换过程。
上两个章节熟悉并了解了什么是防火墙,防火墙的工具iptables以及iptables原理和应用。这一篇是具体的详细实验操作。
iptables是 Linux系统中用于管理网络包过滤的工具。它可以用来设置规则,以控制网络数据包的流动。iptables可以用于防火墙、网络地址转换(NAT)和网络包过滤等多种用途。
将此tar包传到需要部署的离线服务器 (以上是一台在线电脑) (以下是一台离线电脑) 导入nexus3镜像
随着虚拟化技术的应用,很多环境配置都是在虚拟机中进行的,比如前几天我搭建的 Git 服务器,就是在一个物理机的虚拟机上搭建的,一方面可以做环境隔离,另一方面也方便管理,但是这样会带来另一个新的问题:网络访问。
操作系统centos centos7版本之前使用的是iptables,centos7版本之后变更为firewalld。 iptables配置实例 iptables命令可用于配置Linux的包过滤规则,常用于实现防火墙、NAT。 文件位置 /etc/sysconfig/iptables IPTABLES的设置情况 v:显示详细信息,包括每条规则的匹配包数量和匹配字节数 x:在 v 的基础上,禁止自动单位换算(K、M) vps侦探 n:只显示IP地址和端口号,不将ip解析为域名 iptables -L -n
声明:本人坚决反对利用文章内容进行恶意攻击行为,一切错误行为必将受到惩罚,绿色网络需要靠我们共同维护,推荐大家在了解技术原理的前提下,更好的维护个人信息安全、企业安全、国家安全。
领取专属 10元无门槛券
手把手带您无忧上云