You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

单公网IP下Cisco ASA 5505配置互联网访问DMZ服务器技术问询

单公网IP下Cisco ASA 5505配置PAT访问DMZ服务器指南

别担心,刚接触Cisco设备的时候遇到这种基础配置问题太正常了,我刚上手ASA的时候也对着单公网IP的PAT挠了半天头😉。下面我一步步给你讲怎么配置,完全贴合你只有一个公网IP的场景:

一、先把接口基础配置捋顺(如果还没弄好的话)

ASA 5505是带交换端口的防火墙,得先把三个接口(Outside、DMZ、Inside)的VLAN、IP、安全级别配置好,安全级别默认是Outside最低(0)、DMZ中间(50)、Inside最高(100),这个逻辑符合ASA的安全规则(高安全级别可以访问低的,反过来需要ACL):

! 配置连接互联网的Outside接口
interface Vlan2
 nameif Outside
 security-level 0
 ip address 203.0.113.1 255.255.255.252  # 替换成你的公网IP和子网掩码
 no shutdown

! 配置放Web/邮件服务器的DMZ接口
interface Vlan3
 nameif DMZ
 security-level 50
 ip address 192.168.2.1 255.255.255.0  # 这个DMZ子网你可以按需改,只要和内部局域网不冲突就行
 no shutdown

! 配置内部局域网的Inside接口
interface Vlan1
 nameif Inside
 security-level 100
 ip address 192.168.1.1 255.255.255.0
 no shutdown

! 把物理端口分配到对应VLAN(ASA 5505的物理口默认是交换口,必须分配)
interface Ethernet0/0
 switchport access vlan 2  # 这个口插你的宽带进线

interface Ethernet0/1
 switchport access vlan 3  # 这个口接DMZ的交换机,连Web/邮件服务器

interface Ethernet0/2
 switchport access vlan 1  # 这个口接内部局域网的交换机,其他内部口也可以这么分配

二、配置静态PAT(核心步骤!

因为只有一个公网IP,我们要把公网IP上的特定端口(比如Web的80/443、邮件的25/110/143)映射到DMZ里对应服务器的IP和端口上。假设你的Web服务器是192.168.2.10,邮件服务器是192.168.2.11(如果是同一台服务器,直接合并映射就行):

1. Web服务器的端口映射(HTTP+HTTPS)

! 把公网IP的80端口映射到DMZ里Web服务器的80端口
static (DMZ,Outside) tcp interface 80 192.168.2.10 80 netmask 255.255.255.255

! 同理,映射HTTPS的443端口
static (DMZ,Outside) tcp interface 443 192.168.2.10 443 netmask 255.255.255.255

这里用interface代替手动写公网IP,后续如果公网IP变了,不用改这部分配置,很方便。

2. 邮件服务器的端口映射(SMTP+POP3+IMAP)

! SMTP(25端口,用来接收外域邮件)
static (DMZ,Outside) tcp interface 25 192.168.2.11 25 netmask 255.255.255.255

! POP3(110端口,客户端收邮件用)
static (DMZ,Outside) tcp interface 110 192.168.2.11 110 netmask 255.255.255.255

! IMAP(143端口,比POP3更常用的收邮件协议)
static (DMZ,Outside) tcp interface 143 192.168.2.11 143 netmask 255.255.255.255

如果你的邮件服务器用加密端口(比如993/IMAPS、995/POP3S),直接加对应的映射命令就行,格式和上面一样。

三、配置ACL允许外部流量进来

光做了PAT还不够,ASA默认会拒绝所有从低安全级别(Outside)到高安全级别(DMZ)的流量,所以得配置访问控制列表,允许外部用户访问我们刚才映射的端口:

! 创建一个叫Outside_in的ACL,允许外部访问指定端口
access-list Outside_in permit tcp any interface Outside eq 80
access-list Outside_in permit tcp any interface Outside eq 443
access-list Outside_in permit tcp any interface Outside eq 25
access-list Outside_in permit tcp any interface Outside eq 110
access-list Outside_in permit tcp any interface Outside eq 143

! 把这个ACL应用到Outside接口的入方向(也就是外部进来的流量)
access-group Outside_in in interface Outside

四、让DMZ服务器能访问互联网(可选但实用)

如果你的Web服务器需要拉取更新、邮件服务器需要发外域邮件,就得配置动态PAT让DMZ的服务器能通过公网IP访问互联网:

! 配置DMZ到Outside的动态PAT,用Outside接口的公网IP做转换
nat (DMZ,Outside) after-auto source dynamic any interface

这里的after-auto是让ASA先处理静态PAT,再处理动态PAT,避免冲突。

五、验证配置是否生效

配置完之后可以用这些命令检查:

  • show static:看看静态PAT的映射有没有正确创建
  • show access-list:查看ACL的匹配计数,如果有外部访问,计数会增加
  • show nat:确认NAT配置都生效了
  • 找个外部网络(比如手机开热点)测试访问你的公网IP的80、25等端口,看看能不能正常连接到服务器

最后提几个小坑:

  • 很多ISP会封锁25端口(反垃圾邮件),如果邮件服务器收不到外域邮件,记得联系ISP解锁
  • DMZ里的服务器默认网关必须设成ASA的DMZ接口IP(比如我上面写的192.168.2.1),不然服务器没法和ASA通信
  • 你的ASA基础授权完全支持这些配置,不用担心授权不够的问题

内容的提问来源于stack exchange,提问作者Søren Sjøstrøm

火山引擎 最新活动