I run IPfilter on Solaris 10 quite successfully. However, I ran into a strange problem while trying to implement port forwarding with the rdr and map commands of ipnat.

Context:

# uname -a
SunOS lamorphe 5.10 Generic_120011-14 sun4u sparc SUNW,UltraAX-i2

# isainfo -vk
64-bit sparcv9 kernel modules

# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
        inet 127.0.0.1 netmask ff000000
eri0: flags=1100843<UP,BROADCAST,RUNNING,MULTICAST,ROUTER,IPv4> mtu 1500 index 2
        inet 194.88.106.36 netmask fffffff8 broadcast 194.88.106.39
        ether 0:3:ba:c:21:f7
qfe2: flags=1100843<UP,BROADCAST,RUNNING,MULTICAST,ROUTER,IPv4> mtu 1500 index 4
        inet 192.168.90.2 netmask ffffff00 broadcast 192.168.90.255
        ether 8:0:20:e5:7f:1a

# netstat -rn
Routing Table: IPv4
Destination Gateway Flags Ref Use Interface -------------------- -------------------- ----- ----- ---------- ---------
default              194.88.106.33        UG        1      50259
192.168.90.0         192.168.90.2         U         1       5847 qfe2
194.88.106.32        194.88.106.36        U         1      11606 eri0
224.0.0.0            194.88.106.36        U         1          0 eri0
127.0.0.1            127.0.0.1            UH        1         66 lo0

# netstat -i
Name Mtu Net/Dest Address Ipkts Ierrs Opkts Oerrs Collis Queue lo0 8232 loopback localhost 652 0 652 0 0 0 eri0 1500 lamorphe lamorphe 24374356 0 18841128 0 0 0 qfe2 1500 lamor2 lamor2 17639693 0 19901840 0 0 0

# netstat -s -P ip

IPv4    ipForwarding        =     1     ipDefaultTTL        =   255
        ipInReceives        =59214974   ipInHdrErrors       =     0
        ipInAddrErrors      =     0     ipInCksumErrs       =     0
        ipForwDatagrams     =37418538   ipForwProhibits     =   262
        ipInUnknownProtos   =     0     ipInDiscards        =   290
        ipInDelivers        =1421895    ipOutRequests       =18930493
        ipOutDiscards       =     2     ipOutNoRoutes       =     0
        ipReasmTimeout      =    60     ipReasmReqds        =408190
        ipReasmOKs          =408184     ipReasmFails        =     6
        ipReasmDuplicates   =     0     ipReasmPartDups     =     0
        ipFragOKs           =     6     ipFragFails         =  2627
        ipFragCreates       =    15     ipRoutingDiscards   =     0
        tcpInErrs           =     3     udpNoPorts          =   592
        udpInCksumErrs      =     1     udpInOverflows      =     0
        rawipInOverflows    =     0     ipsecInSucceeded    =21232321
        ipsecInFailed       =     0     ipInIPv6            =     0
        ipOutIPv6           =     0     ipOutSwitchIPv6     =     0

# ipf -V
ipf: IP Filter: v4.1.9 (592)
Kernel: IP Filter: v4.1.9
Running: yes
Log Flags: 0 = none set
Default: pass all, Logging: available
Active list: 1
Feature mask: 0x107

# ipfstat
bad packets:            in 0    out 0
 IPv6 packets:          in 0 out 0
input packets: blocked 79485 passed 59136029 nomatch 19988431 counted 0 short 0 output packets: blocked 38103 passed 56315224 nomatch 13359002 counted 0 short 0
 input packets logged:  blocked 0 passed 224313
output packets logged:  blocked 0 passed 194313
 packets logged:        input 0 output 0
 log failures:          input 73754 output 78930
fragment state(in):     kept 0  lost 0  not fragmented 0
fragment state(out):    kept 0  lost 0  not fragmented 0
packet state(in):       kept 1386       lost 0
packet state(out):      kept 153856     lost 1150
ICMP replies:   0       TCP RSTs sent:  0
Invalid source(in):     0
Result cache hits(in):  27580158        (out):  25899861
IN Pullups succeeded:   408     failed: 0
OUT Pullups succeeded:  17762708        failed: 0
Fastroute successes:    0       failures:       0
TCP cksum fails(in):    0       (out):  0
IPF Ticks:      49257259
Packet log flags set: (0)
        none

# ipfstat -io
pass out quick on lo0 all
block out on eri0 all
block out log on qfe2 all
pass out quick on eri0 proto icmp from any to any keep state
pass out quick on eri0 proto tcp/udp from any to any keep state
pass out log quick on qfe2 proto icmp from any to any keep state
pass out log quick on qfe2 proto tcp from any to 192.168.90.1/32 port = ftp-data flags S/FSRPAU keep state
pass out log quick on qfe2 proto tcp from any to any keep state
pass out log quick on qfe2 proto tcp from any to 192.168.90.1/32
pass out log quick on qfe2 all keep state
block in log quick from any to any with short
block in log from any to any with ipopts
pass in quick on lo0 all
block in on eri0 all
block in log on qfe2 all
pass in quick on eri0 proto udp from any to any port = domain
pass in quick on eri0 proto tcp from any to any port = domain
pass in quick on eri0 proto tcp from any to any port = ssh flags S/ FSRPAU keep state pass in log quick on qfe2 proto icmp from 192.168.90.0/24 to any keep state pass in log quick on qfe2 proto tcp from 192.168.90.0/24 to any port = ftp flags S/FSRPAU keep state pass in log quick on qfe2 proto tcp from 192.168.90.0/24 to 192.168.90.2/32 port = ssh flags S/FSRPAU keep state
pass in log quick on qfe2 proto tcp from 192.168.90.0/24 to any
pass in quick on eri0 proto tcp from any to 194.88.106.36/32 port = ssh flags S/FSRPAU keep state

# ipnat -slv
mapped  in      2649    out     2411
added   1917    expired 0
no memory       0       bad nat 0
inuse   0
rules   2
wilds   0
table ffffffff7ffffc20 list 30000f52180
List of active MAP/Redirect filters:
rdr eri0 from any to 194.88.106.36/32 port = 9022 -> 192.168.90.1 port 22 tcp
map qfe2 from any to 192.168.90.1/32 port = 22 -> 192.168.90.2/32

List of active sessions:

List of active host mappings:

#
___________________________________________________

Having stated all this, what is it that I am trying to achieve and what is the problem?

Starting out there on the Internet, I want to ssh 194.88.106.36 on port 9022 with the intent of reaching 192.168.90.1 port 22.

The given configuration works, BUT only while I snoop on interface eri0 of 194.88.106.36 !?
When I stop snooping, so does the traffic from source to destination.
As soon as I restart snoop, traffic resumes.

I only intended to use snoop as a debugging tool, not as an integral part of port forwarding.

Any idea out there?

Thanks,

Thierry

Reply via email to