I have a 24-port Cisco 2950 on my ASA 5520 DMZ interface. It is segregated into 23 vlans:
switchport access vlan 101
ip address 192.168.101.1 255.255.255.0
switchport access vlan 102
ip address 192.168.102.1 255.255.255.0
switchport mode trunk
switchport trunk allowed vlan 101-123
Then there's 23 subinterfaces on my ASA dmz interface:
ip address 192.168.101.2 255.255.255.0
ip address 192.168.102.2 255.255.255.0
route outside 0 0
global (outside) 1 <PUBLIC_IP>
nat (dmz-101) 1 0.0.0.0 0.0.0.0 0 0
nat (dmz-102) 1 0.0.0.0 0.0.0.0 0 0
The asdm Packet Tracer reports that a client on vlan 109 (192.168.109.101) hitting interface dmz-109 will pass to an outside ip:80 (www). However, when I try to hit ip:80, no joy.
When I scrape off all the subinterfaces and put the switch to a default configuration (every port on vlan 1), it works fine.
What should the switch config look like to actually communicate correctly with the ASA?
If the client (I assume located off the switch somewhere) can ping the ASA's IP (which should obviously be on the same VLAN as the client), then you correctly configured trunking on the switch and ASA, and that is not your problem.
Did you set the client's default gateway to be that of the ASA? If so, then the next step is to check the syslogs on the ASA to see if the connection is getting built.
The config you pasted in looks fine. Trying pinging from the client to the ASA's default router, and enable "debug icmp trace" on the ASA and see if you see the ICMP Echo and ICMP Echo-reply packets. That will also help narrow down where the issue is.