Date: Sat, 7 Jan 2012 20:20:11 GMT From: Greg Radzykewycz <sysmgr@inlandnet.com> To: freebsd-ipfw@FreeBSD.org Subject: Re: kern/163873: ipfw fwd does not work with 'via interface' in rule body Message-ID: <201201072020.q07KKB7G022832@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/163873; it has been noted by GNATS. From: Greg Radzykewycz <sysmgr@inlandnet.com> To: =?windows-1251?b?yu7t/Oru4iDF4uPl7ejp?= <kes-kes@yandex.ru> Cc: freebsd-gnats-submit@freebsd.org Subject: Re: kern/163873: ipfw fwd does not work with 'via interface' in rule body Date: Sat, 7 Jan 2012 11:35:27 -0800 Greetings =CA=EE=ED=FC=EA=EE=E2, Thank you for looking into this and your response. If you will note though = and=20 even with traffic originated locally and only a single functioning interfac= e,=20 forwarding fails to occur when the ipfw rule contains "via interface". According to the ipfw man page. fwd | forward ipaddr | tablearg[,port] Change the next-hop on matching packets to ipaddr ... If ipaddr is not a local address, then the port number (if specifed) is=20 ignored, and the packet will be forwarded to the remote address, using the= =20 route as found in the local routing table for that IP. In the testing that was done where there was only one active interface, em0= ,=20 when "via em0" was added to the ipfw rule, forwarding failed. Without "via= =20 em0" in the rule, forwarding worked. That was the only difference. Perhaps it is important to note that in both the production and test=20 evnironments the IP address that was being forwarded to was on a local=20 Ethernet network. In the test environment, the firewall's IP address=20 (192.168.0.34), the default route (192.168.0.1) and the forward IP address= =20 (192.168.0.10) were on the same em0 interface and in the same /24 network. I hope this help. And thanks again! =2D-=20 Warmest Regards Greg Radzykewycz Manager of Information Systems Inland Cellular / Inland Networks On Friday 06 January 2012 13:25:27 you wrote: > =C7=E4=F0=E0=E2=F1=F2=E2=F3=E9=F2=E5, Greg. >=20 > =C2=FB =EF=E8=F1=E0=EB=E8 6 =FF=ED=E2=E0=F0=FF 2012 =E3., 23:07:40: > >>Number: 163873 > >>Category: kern > >>Synopsis: ipfw fwd does not work with 'via interface' in rule body > >>Confidential: no > >>Severity: non-critical > >>Priority: low > >>Responsible: freebsd-bugs > >>State: open > >>Quarter: > >>Keywords: > >>Date-Required: > >>Class: sw-bug > >>Submitter-Id: current-users > >>Arrival-Date: Fri Jan 06 21:10:09 UTC 2012 > >>Closed-Date: > >>Last-Modified: > >>Originator: Greg Radzykewycz > >>Release: 8.2-RELEASE >=20 > >>Organization: > GR> Inland Networks >=20 > >>Environment: > GR> FreeBSD pandora.inlandnet.com 8.2-RELEASE FreeBSD 8.2-RELEASE #0: > GR> Wed Dec 21 09:06:00 PST 2011 > GR> root@pandora.inlandnet.com:/usr/src/sys/i386/compile/PANDORA i386 >=20 > >>Description: > GR> This PR may be related to the following PRs. > GR> kern/129036 > GR> kern/122963 >=20 > GR> In upgrading a firewall from FreeBSD 4.11 to 8.2 there was a > GR> problem with the firewall not forwarding DNS queries to a DNS > GR> proxy server running on another box. The firewall rules were > GR> identical between 4.11 and 8.2. Sample rule follows. >=20 > GR> ${fwcmd} add fwd ${dnsproxy} udp from any to ${atldns1} domain in via > ${iif1} try to add before your rule this one: > ${fwcmd} add log fwd ${dnsproxy} udp from any to ${atldns1} domain >=20 > and see /var/log/security to obtain how kernel see that packet >=20 > Also notice that when you receive 'via rl0' and you try to fwd to > address that is reachable on rl3 the packet will have state 'out xmit rl3' > and not 'via rl0', as you expect, maybe. >=20 > GR> While this worked on 4.11, it did not on 8.2. >=20 > GR> After a Google search turned up nothing pertinent, testing > GR> different variations of the firewall rule was done. The box was > GR> taken out of service and reconfigured for testing. Testing was done > with TCP for simplicity. >=20 > GR> The following worked. > GR> ipfw add 350 fwd 192.168.0.10 tcp from any to 10.10.10.10 53 >=20 > GR> With tcpdump running on 192.168.0.10, packets to 10.10.10.10 TCP > GR> port 53 were seen when the command "telnet 10.10.10.10 53" was run on > the firewall box. >=20 > GR> The following did not work. > GR> ipfw add 350 fwd 192.168.0.10 tcp from any to 10.10.10.10 53 via em0 >=20 > GR> Interface em0 was the only interface connected and configured at > GR> the time and also was the default route (192.168.0.1). Any > GR> external IP traffic would pass through em0 regardless. Doing the > GR> same test with tcpdump running on 192.168.0.10, packets to > GR> 10.10.10.10 TCP port 53 were not seen on 192.168.0.10 when the > GR> command "telnet 10.10.10.10 53" was run on the firewall box. >=20 > GR> The firewall box was reconfigured for production use. The > GR> firewall rules associated with proxying DNS requess were all > GR> changed to remove 'in via ${iif}' and the box was put back in > GR> service. Without the 'in via' in the rules, it functioned as > GR> expected proxying the DNS queries. >=20 > >>How-To-Repeat: > GR> See description. The problem was consistent and repeatable. >=20 > >>Fix: > GR> Unknown. >=20 > >>Release-Note: > >>Audit-Trail: >=20 > >>Unformatted: > GR> _______________________________________________ > GR> freebsd-bugs@freebsd.org mailing list > GR> http://lists.freebsd.org/mailman/listinfo/freebsd-bugs > GR> To unsubscribe, send any mail to > GR> "freebsd-bugs-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201201072020.q07KKB7G022832>