{2600}---
| --- /29
| |
---- fxp0 { OpenBSD } fxp1 --|
{ Bridge } |
eth0 { Cisco 2514 } eth1 --|
|
| /28
More OpenBSD Units
I am having a problem that I have been unable to fix. The scenario above
is what my lab looks like. Essentially my workstation lives off the /29
behind the fxp1 interface. The OpenBSD Bridge is a 3.3 Generic with
pf/altq protecting everything behind it. I can ssh to the OpenBSD bridge
from my workstation because my IP address is on the same /29 as the
External Int of the Bridge on fxp0, but none of my machines behind the
Cisco 2514 on the eth1 network /28 can talk directly to the Bridge but can
bridge out/in just fine. Mind you traffic from the /29 can talk to the
bridge just fine. Just to clarify anything that comes in from the
Internet and lands on fxp0 can talk to the Bridge as well.
I see this in my tcpdumps
## XXX.XXX.56.211 = machine on /28 subnet
## xxx.xxx.43.114 = fxp0 IP on Bridge on /29
Jun 09 11:09:48.142206 rule 20/0(match): pass in on fxp0: XXX.XXX.56.211.32214 >
xxx.xxx.43.114.22: S
Jun 09 11:09:48.146181 rule 6/0(match): block in on fxp0: xxx.xxx.43.114.22 >
XXX.XXX.56.211.32214: S
supporting icmp redirect dumps show this
Jun 09 11:19:55.824378 : ROU.TER.IP.113 > xxx.xxx.43.114: icmp: redirect
XXX.XXX.56.211 to net xxx.xxx.43.116
This looks to me like a icmp redirect problem because I am seeing the
External IP of my bridge send the packet right back at the interface with
destination of the correct machine on the /29.
I at first thought it was a problem with icmp route-redirects on the
Bridge not being allowed to pass in to tell the Bridge external IP to
redirect the traffic back out fxp1. After adding
$gw_router = ip of bridge next hop --> Cisco 2600
# ICMP router redirect for multiple networks
pass in log quick on $br0_if inet proto icmp from $gw_router to any icmp-type 5 code 0
keep state queue man1 label "pass icmp redirects from gw_router"
pass in log quick on $br0_if inet proto icmp from $gw_router to any icmp-type 5 code 1
keep state queue man1 label "pass icmp redirects from gw_router"
pass in log quick on $br0_if inet proto icmp from $gw_router to any icmp-type 5 code 2
keep state queue man1 label "pass icmp redirects from gw_router"
pass in log quick on $br0_if inet proto icmp from $gw_router to any icmp-type 5 code 3
keep state queue man1 label "pass icmp redirects from gw_router"
This didn't work and I noticed that the block was on xxx.xxx.43.114
coming in the fxp0 interface so I put a statement for xxx.xxx.43.114 to
allow in on fxp0 although this should never happen except in this
situation. After doing this I see the following when trying to ssh to
xxx.xxx.43.114 from a IP on the /28 network.
Jun 09 12:09:24.680962 rule 20/0(match): pass in on fxp0: XXX.XX.56.211.32148 >
xxx.xxx.43.114.22: S
Jun 09 12:09:24.700588 rule 61/0(match): pass in on fxp0: xxx.xxx.43.114.22 >
XXX.XXX.56.211.32148: S
Jun 09 12:09:30.692264 rule 61/0(match): pass in on fxp0: xxx.xxx.43.114.22 >
XXX.XXX.56.211.32148: S
Jun 09 12:09:36.679255 rule 61/0(match): pass in on fxp0: xxx.xxx.43.114.22 >
XXX.XXX.56.211.32148: S
but It never establishes the connection and I don't see any blocks on
pflog0
Seeing how this didn't work I again looked at what was happening and tried
to add a route on the bridge using the interface as the direction to push
the /28 network - I assumed this would work like a Cisco { ie static
route a network out a interface }q
route add XXX.XXX.56.208/28 -interface fxp1
route: fxp1: bad value
route add XXX.XXX.56.208 -netmask XXX.XXX.XXX.240 -interface fxp1
route: fxp1: bad value
I am confused now - do I have syntax wrong on this can I not influence a
route out a interface
that is just "up"
fxp1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
address: 00:02:b3:bf:e8:b6
media: Ethernet 100baseTX full-duplex
status: active
inet6 fe80::202:b3ff:febf:e8b6%fxp1 prefixlen 64 scopeid 0x2
I even tried this line in my pf.conf
@13 pass in log quick on fxp0 reply-to fxp1 inet proto tcp from XXX.XXX.56.211 to
xxx.xxx.43.114 port = ssh keep state
and do see the action hiting that line
Jun 09 12:59:01.243481 rule 13/0(match): pass in on fxp0: XXX.XXX.56.211.9681 >
xxx.xxx.43.114.22: S
but I still get no connection.
The 2514 can talk directly to the bridge but it knows about both /29 and
/28
2514_dual_eth>telnet XXX.XXX.43.114 22
Trying XXX.XXX.43.114, 22 ... Open
SSH-1.99-OpenSSH_3.6.1
But a Unit on the other side of the 2514 can't
some.host.name:/etc% telnet XXX.XXX.43.114 22
Trying XXX.XXX.43.114...
Any Ideas or anyone have a similar situation and they found a resolution?
TIA
Jason Houx