拒绝“反向建连”!交换机ACL实现TCP单向访问 2025-04-10 网络 暂无评论 195 次阅读 今天遇到客户有一个较为少用的一个特殊需求,就是需要实现TCP的单向访问。例如:vlan10与vlan20通过交换机相连接,vlan20能够主动vlan10网络,但是vlan10不能够主动访问vlan20,其目的是为了vlan20网络的安全。当然如果是通过路由器连接就比较简单,只需要开启ACL自反功能就可以,但是交换机该如何实现呢? #TCP单向访问实现原理 Tcp ack匹配的是带有Ack标志位的Tcp连接报文,而Tcp syn匹配的是所有Tcp连接报文。在配置ACL是需要先匹配Permit的,再匹配Deny的。这样的结果是Deny了不带有Ack标志位的Tcp连接报文,即建立Tcp连接过程的第一个不带ack标志位的请求报文,这样就可以阻断一个方向的报文TCP连接,下面实验将详细讲解阻断原理。  #真机实验 ##01 拓扑图和需求 vlan10与vlan20通过SW2交换机相连接,vlan20网络能够主动访问vlan10网络,但是vlan10网络不能够主动访问vlan20网络。即SW1 10.1.1.2不能telnet访问SW3 20.1.1.2,但是SW3 20.1.1.2可以telnet 访问SW1 10.1.1.2。  ##02 SW2关键配置 ``` acl advanced 3000 rule 0 permit tcp source 10.1.1.0 0.0.0.255 destination 20.1.1.0 0.0.0.255 ack 1 rule 5 permit tcp source 10.1.1.0 0.0.0.255 destination 20.1.1.0 0.0.0.255 rst 1 rule 10 deny tcp interface Vlan-interface10 ip address 10.1.1.1 255.255.255.0 interface Vlan-interface20 ip address 20.1.1.1 255.255.255.0 packet-filter 3000 outbound ``` ##03 原理分析 RST=1(复位标志位):表示该报文是一个复位报文,要求立即终止连接,无需正常挥手流程。 一、因ACL是应用在SW2的interface vlan20接口的out方向,所以且rule 0和5源地址是SW1的10.1.1.0/24网段,所以应用在out方向只影响SW1发给SW3的TCP数据包。 二、在SW2交换机配置的acl中,rule 0 permit tcp source 10.1.1.0 0.0.0.255 destination 20.1.1.0 0.0.0.255 ack 1这条可以让SW3主动建立TCP连接的时候可以在第二次握手的时候正常回ACK的数据包,从而SW3可以正常与SW1建立tcp连接。   三、因SW1主动telnet的时候需要发SYN报文,SW2上配置的acl并没有放通TCP SYN报文到SW3,所以匹配到了默认拒绝的条目,达到阻断的效果。  ##04 结果验证 SW1 telnet SW3被阻断,无法实现访问  SW3 telnet SW1可以正常访问  #本文总结 虽然交换机无法像路由器一样实现ip的单向通信,但是在实际应用中我们常常需要禁止掉的并非所有的ip报文,很多时候只是需要禁止掉某一方主动发起的tcp连接,而另一方发起的tcp连接则正常放行。这时候在交换机上我们是可以利用扩展ACL里面的字段控制来实现该功能的。 转自https://mp.weixin.qq.com/s/FUU8bwbS_4z2r1TG_iIOqw 标签: tcp, acl 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。