Dmz firewall: why redirect don't work?

I have configured a dmz which can reach internet, and cannot reach the internal network. Actually I put only one server in dmz (an http server). Works fine (i can ping it from lan, can ssh from lan, but the redirection don't work).
Those are my configuration files

/etc/config/network


config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix '*****'

config atm-bridge 'atm'
	option vpi '1'
	option vci '32'
	option encaps 'llc'
	option payload 'bridged'
	option nameprefix 'dsl'

config dsl 'dsl'
	option annex 'b'
	option tone 'av'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan3'
	list ports 'lan4'

config device
	option name 'lan1'
	option macaddr '******'

config device
	option name 'lan2'
        option macaddr '******'

config device
	option name 'lan3'
        option macaddr '******'

config device
	option name 'lan4'
        option macaddr '******'

config interface 'lan1'
	option device 'lan1'
	option proto 'static'
	option ipaddr '192.168.0.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config interface 'lan2'
	option device 'lan2'
	option proto 'static'
	option ipaddr '192.168.178.1'
	option netmask '255.255.255.0'
	option ip6assign '60'

config device
	option name 'dsl0'
        option macaddr '******'

config device
        option type '8021q'
        option ifname 'lan1'
        option vid '1'
        option name 'lan1.1'

config interface 'dmz'
        option proto 'static'
        option device 'lan1.1'
        option ipaddr '192.168.179.1'
        option netmask '255.255.255.0'

config interface 'wan'
	option device 'dsl0.835'
	option proto 'pppoe'
	option peerdns '0'
	option ipv6 '1'
	option username 'me'
	option password 'you'
	list dns '8.8.8.8'
	list dns '8.8.4.4'

config interface 'wan6'
	option device '@wan'
	option proto 'dhcpv6'

/etc/config/firewall


config defaults
	option syn_flood	1
	option input		REJECT
	option output		ACCEPT
	option forward		REJECT
# Uncomment this line to disable ipv6 rules
#	option disable_ipv6	1

config zone
	option name		lan
	list   network		'lan'
	option input		ACCEPT
	option output		ACCEPT
	option forward		ACCEPT
        list network 'br-lan'
        list network 'lan1'
        list network 'lan2'

config zone
	option name		wan
	list   network		'wan'
	list   network		'wan6'
	option input		REJECT
	option output		ACCEPT
	option forward		REJECT
	option masq		1
	option mtu_fix		1

config forwarding
	option src		lan
	option dest		wan

# We need to accept udp packets on port 68,
# see https://dev.openwrt.org/ticket/4108
config rule
	option name		Allow-DHCP-Renew
	option src		wan
	option proto		udp
	option dest_port	68
	option target		ACCEPT
	option family		ipv4

# Allow IPv4 ping
config rule
	option name		Allow-Ping
	option src		wan
	option proto		icmp
	option icmp_type	echo-request
	option family		ipv4
	option target		ACCEPT

config rule
	option name		Allow-IGMP
	option src		wan
	option proto		igmp
	option family		ipv4
	option target		ACCEPT

# Allow DHCPv6 replies
# see https://github.com/openwrt/openwrt/issues/5066
config rule
	option name		Allow-DHCPv6
	option src		wan
	option proto		udp
	option dest_port	546
	option family		ipv6
	option target		ACCEPT

config rule
	option name		Allow-MLD
	option src		wan
	option proto		icmp
	option src_ip		fe80::/10
	list icmp_type		'130/0'
	list icmp_type		'131/0'
	list icmp_type		'132/0'
	list icmp_type		'143/0'
	option family		ipv6
	option target		ACCEPT

# Allow essential incoming IPv6 ICMP traffic
config rule
	option name		Allow-ICMPv6-Input
	option src		wan
	option proto	icmp
	list icmp_type		echo-request
	list icmp_type		echo-reply
	list icmp_type		destination-unreachable
	list icmp_type		packet-too-big
	list icmp_type		time-exceeded
	list icmp_type		bad-header
	list icmp_type		unknown-header-type
	list icmp_type		router-solicitation
	list icmp_type		neighbour-solicitation
	list icmp_type		router-advertisement
	list icmp_type		neighbour-advertisement
	option limit		1000/sec
	option family		ipv6
	option target		ACCEPT

# Allow essential forwarded IPv6 ICMP traffic
config rule
	option name		Allow-ICMPv6-Forward
	option src		wan
	option dest		*
	option proto		icmp
	list icmp_type		echo-request
	list icmp_type		echo-reply
	list icmp_type		destination-unreachable
	list icmp_type		packet-too-big
	list icmp_type		time-exceeded
	list icmp_type		bad-header
	list icmp_type		unknown-header-type
	option limit		1000/sec
	option family		ipv6
	option target		ACCEPT

config rule
	option name		Allow-IPSec-ESP
	option src		wan
	option dest		lan
	option proto		esp
	option target		ACCEPT

config rule
	option name		Allow-ISAKMP
	option src		wan
	option dest		lan
	option dest_port	500
	option proto		udp
	option target		ACCEPT


### EXAMPLE CONFIG SECTIONS
# do not allow a specific ip to access wan
#config rule
#	option src		lan
#	option src_ip	192.168.45.2
#	option dest		wan
#	option proto	tcp
#	option target	REJECT

# block a specific mac on wan
#config rule
#	option dest		wan
#	option src_mac	00:11:22:33:44:66
#	option target	REJECT

# block incoming ICMP traffic on a zone
#config rule
#	option src		lan
#	option proto	ICMP
#	option target	DROP

# port redirect port coming in on wan to lan
#config redirect
#	option src			wan
#	option src_dport	80
#	option dest			lan
#	option dest_ip		192.168.16.235
#	option dest_port	80
#	option proto		tcp

# port redirect of remapped ssh port (22001) on wan
#config redirect
#	option src		wan
#	option src_dport	22001
#	option dest		lan
#	option dest_port	22
#	option proto		tcp

### FULL CONFIG SECTIONS
#config rule
#	option src		lan
#	option src_ip	192.168.45.2
#	option src_mac	00:11:22:33:44:55
#	option src_port	80
#	option dest		wan
#	option dest_ip	194.25.2.129
#	option dest_port	120
#	option proto	tcp
#	option target	REJECT

#config redirect
#	option src		lan
#	option src_ip	192.168.45.2
#	option src_mac	00:11:22:33:44:55
#	option src_port		1024
#	option src_dport	80
#	option dest_ip	194.25.2.129
#	option dest_port	120
#	option proto	tcp

config zone
        option name 'dmz'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list device 'lan1.1'

config forwarding
        option src 'lan'
        option dest 'dmz'

config forwarding
        option src 'dmz'
        option dest 'wan'

config redirect
        option dest 'dmz'
        option target 'DNAT'
        option name 'Http redir'
        option src 'wan'
        option src_dport '443'
        list proto 'tcp'
        option dest_ip '192.168.179.3'

The ip 192.168.179.3 is reachable from router and from lan


telnet 192.168.179.3 443
Trying 192.168.179.3...
Connected to 192.168.179.3.
Escape character is '^]'.

When I restart firewall on openwrt router this error message appear

Section @redirect[0] (Http redir) internal rewrite IP cannot be determined, disabling reflection

And redirect don't work

telnet externalip 443
telnet: Unable to connect to remote host: Connection refused

Any idea? A redirection on an ip of lan works

Solution found, strange but works

config redirect
       option name            'Http1'
       option target          DNAT
       option src             wan
       option dest            lan
       option proto           tcp
       option src_dport       443
       option dest_ip         192.168.179.3
       option dest_port       443
       option enabled         1

config redirect
       option name            'Https1'
       option target          DNAT
       option src             wan
       option dest            lan
       option proto           tcp
       option src_dport       80
       option dest_ip         192.168.179.3
       option dest_port       80
       option enabled         1

The dest must be "lan" instead of "dmz" and ip is ip of dmz

This is because the packet has to be routed in order for the firewall to manipulate it. You merely placed the packet into the LAN network, then forced it to forward to DMZ.

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.