Как получить IP пользователя, если сервер за роутером?
По моему, выше отписавшийся товарищ не понял сути.
порт переадресован на рутере с dd-wrt (iptables), то есть Ваш web-сервер не получит реальный адрес по-любому, будь это хоть апачь, хоть эндженкс, хоть еще что.

Так что не заморачивайтесь.
В Вашем случае выход такой — только если есть возможность, поставить на dd-wrt прокси в переадресацией на ваш внутренний web-сервер. Но это если у Вас рутер позволяет.
Если стоит nginx+apache2, то включен mod_rpaf?

Debian, включаем mod_rpaf:
# a2enmod rpaf

Если не установлен, устанавливаем:
# aptitude install libapache2-mod-rpaf

Затем в /etc/apache2/httpd.conf добавляем:

RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1 тут_пишем_свой_ip

Перезапускаем Apache2:
# /etc/init.d/apache2 restart
или 
# apache2ctl restart