iptables配置的相关知识点

近日将iptables防火墙捣弄了下,按以下链接每一条规则输一遍:

25个iptables常用示例 | 《Linux就该这么学》

其中知识点在这里分享下:

1、iptables是linux的内核,没有开启和关闭,一经保存就生效。

2、-A 和 -I 的区别

结论:-A 会将后执行的策略添加到已有策略后,而-I 则会插入到已有策略的前(既成为第一条策略)

-A参数

iptables是由上往下进行匹配

iptables -A INPUT -s 192.168.228.0/24 -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -s 10.153.97.0/24 -p tcp --dport 22 -j ACCEPT

iptables -A INPUT -p tcp --dport 22 -j DROP

执行以上三条命令后,防火墙由上往下匹配,既从num 1开始匹配到num 3,则允许192.168.228.0/24和10.153.97.0/24这两个网段访问,其他不允许访问

[root@GDY-TEST07 etc]# iptables -L -n --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination        
1    ACCEPT     tcp  --  192.168.228.0/24     0.0.0.0/0           tcp dpt:22
2    ACCEPT     tcp  --  10.153.97.0/24       0.0.0.0/0           tcp dpt:22
3    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination    

对比    -I 参数

iptables -I INPUT -s 192.168.228.0/24 -p tcp --dport 22 -j ACCEPT

iptables -I INPUT -s 10.153.97.0/24 -p tcp --dport 22 -j ACCEPT

iptables -I INPUT -p tcp --dport 22 -j DROP

执行以上三条命令后,防火墙由上往下匹配,既从num 1开始匹配,此时num 1的防火墙策略已将访问拒绝,num 2和num 3即使accept也不会生效

[root@GDY-TEST07 etc]# iptables -L -n --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22        
2    ACCEPT     tcp  --  192.168.228.0/24     0.0.0.0/0           tcp dpt:22
3    ACCEPT     tcp  --  10.153.97.0/24       0.0.0.0/0           tcp dpt:22

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

3、dport和sport的区别:

先来翻译一下dport和sport的意思:

dport:目的端口 
sport:来源端口 

dport 和sport字面意思来说很好理解,一个是数据要到达的目的端口,一个是数据来源的端口。

但是在使用的时候要分具体情况来对待,这个具体情况就是你的数据包的流动行为方式。(INPUT还是OUTPUT)

比如你的例子:iptables -A INPUT -p tcp –dport 80 -j ACCEPT 
注意里面的INPUT参数,这个代表你的这条数据包的进行的 “进入” 操作! 
那么你的这条数据包可以这么描述: 
1.这是一条从外部进入内部本地服务器的数据。 
2.数据包的目的(dport)地址是80,就是要访问我本地的80端口。 
3.允许以上的数据行为通过。 
总结:允许外部数据访问我的本地服务器80端口。

再看第2条列子:iptables -A INPUT -p tcp –sport 80 -j ACCEPT 
1.这是一条从外部进入内部本地服务器的数据。 
2.数据包的来源端口是(sport)80,就是对方的数据包是80端口发送过来的。 
3.允许以上数据行为。 
总结:允许外部的来自80端口的数据访问我的本地服务器。

input方式总结: dport指本地,sport指外部。

如果你的数据包是(OUTPUT)行为,那么就是另外一种理解方式: 
比如: iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT 
1.这是一条从内部出去的数据。 
2.出去的目的(dport)端口是80。 
3.允许以上数据行为。

output行为总结:dport只外部,sport指本地。

4、端口转发:

以端口转发3389为例,远程桌面连接linux 192.168.0.1,通过端口转发,连接到另一个win主机192.168.0.5:

1)#目标地址端口为3389的,转换为 192.168.0.1:3389

iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to 192.168.0.1 :3389

2)#凡目标地址为192.168.0.1:3389的,把源地址转换为192.168.0.5

iptables -t nat -I POSTROUTING -p tcp -d 192.168.0.5  --dport 3389 -j SNAT --to 192.168.0.1

3)若发现新增出错,可删除FORWARD 规则:

1

2

iptables -nL FORWARD --line-number

iptables -D FORWARD 1

删除一条nat 规则  删除SNAT规则

1

3

iptables -t nat  -D POSTROUTING  1

iptables -t nat -D POSTROUTING 7

3)设置sysctl命令用于运行时配置内核参数,否则端口转发失效

nano /etc/sysctl.conf

删除 #net.ipv4.ip_forward=1 前的#号,开启ipv4 forward

sysctl -p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Kubernetes 的网络系统是由多个组件组成的, 它们协作为应用程序提供网络连接和通信. 其中一些主要的组件包括: - kube-proxy: 运行在每个节点上, 负责为 Pod 和 Service 提供代理服务. - kube-dns: 为应用程序提供 DNS 服务. - 网络插件: 用于为 Pod 提供网络连接, 支持不同的网络模型, 如 Calico, Flannel, Cilium 等. - Service: 为应用程序提供负载均衡和服务发现. Kubernetes 的网络模型是基于 Pod 的, 每个 Pod 都有一个独立的 IP 地址, 使得容器间直接通信成为可能. Service 则提供了一种发现和负载均衡的机制, 让外部客户端可以访问 Pod. ### 回答2: Kubernetes(K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。下面是一些与K8s网络相关知识点。 1. 服务发现:K8s通过DNS(域名系统)服务提供内部服务发现机制。每个服务都会被分配一个唯一的域名,其他服务可以通过该域名访问该服务。 2. Pod网络:Pod是K8s中的最小调度单元,它可以包含一个或多个容器。每个Pod都有一个唯一的IP地址,容器可以通过本地回环地址访问其他Pod中的容器。 3. 容器网络接口(CNI):CNI是一个规范,用于定义容器网络的实现方式。K8s使用CNI插件来设置和管理Pod的网络。不同的CNI插件可以支持不同的网络方案,如VLAN、VXLAN、Calico等。 4. 服务代理:K8s使用服务代理来实现服务之间的通信。服务代理可以在集群各个节点上运行,并通过负载均衡来分发到后端Pod。 5. 网络策略:K8s允许用户通过网络策略来定义集群中的网络访问规则。网络策略可以限制哪些Pod可以与另一个Pod通信,以及允许的协议和端口。 6. Ingress控制器:Ingress控制器是K8s中用于管理入站网络流量的组件。它可以将外部流量路由到集群内部的服务,并提供负载均衡和SSL终止等功能。 7. 可插拔网络解决方案:K8s提供了一些可插拔的网络解决方案,如Flannel、Calico等。这些解决方案可以根据具体需求选择,以提供不同的网络拓扑结构和性能。 总而言之,K8s网络相关知识点包括服务发现、Pod网络、CNI、服务代理、网络策略、Ingress控制器和可插拔网络解决方案。这些知识点帮助我们理解和管理K8s集群中的网络配置和通信。 ### 回答3: Kubernetes(简称k8s)是一种用于容器编排和管理的开源平台,它涉及到一些重要的网络概念和组件。 首先,k8s网络模型是基于虚拟网络的概念。每个k8s集群中的容器都会被分配一个独立的IP地址,并且可以通过这个IP地址跨节点进行通信。这是通过一个称为kube-proxy的组件实现的,它会在每个节点上监听API服务器上的变化,并使用iptables或者IPVS等工具在宿主机上进行流量转发。 其次,k8s通过Service和Endpoint来暴露和访问容器。Service是一个逻辑概念,用于封装一组具有相同功能的容器,在集群内部提供服务的访问入口。一个Service可以通过ClusterIP、NodePort或者LoadBalancer等不同的类型暴露。而Endpoint是实际运行容器的IP和端口的集合,用于告诉Service流量应该转发到哪里。 此外,k8s还支持Ingress资源,用于在集群外部暴露服务,实现外部访问。Ingress通过定义一个或多个规则,将外部流量转发到不同的Service上,从而实现域名或路径的复杂路由。 最后,网络插件是k8s网络中的重要组件。k8s提供了一些默认的网络插件,如Flannel、Calico等,用于管理Pod之间的网络通信。网络插件负责创建网络的子网和路由表,并将Pod的IP地址与宿主机的虚拟网卡进行关联。 总结来说,k8s网络涉及到虚拟网络、kube-proxy、Service、Endpoint、Ingress等概念和组件,这些都是为了实现容器间的通信和外部访问的需求。不同的网络插件可以根据具体需求选择,以满足集群的网络需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个高效工作的家伙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值