Wydaje mi się, że koledze chodzi o SNAT. Openwrt przy przekierowaniu portów powinien robić dodatkowo SNAT ( nat_reflection).
Jeśli tego nie robi problem może być z nazwą interfejsu wan ( Ja miałem nazwany dużymi literami i nie chodziło). Jak zmieniłem na małe "wan" wtedy to zaczeło chulać.
Pozwolę sobie zacytować wycinek artykułu o iptables znalezionego w sieci:
Klient z internetu - 90.2.2.2
WAN - 80.1.2.3 - eth0
LAN - 192.168.1.1 - eth1
Serwer WWW - 192.168.1.10
Klient w LAN - 192.168.1.20
W przypadku nawiązania połączenia z zewnątrz droga pakietu jest następująca:
1. Klient wysyła żądanie na nasz adres publiczny (80.1.2.3) sądząc, że to nasz serwer www. Adres ten jest w rzeczywistości adresem naszego routera.
2. Pakiet klienta dociera do naszego routera/firewalla (na interfejs eth0). Pakiet posiada adres źródłowy klienta (90.2.2.2) i adres docelowy naszego routera (80.1.2.3).
3. Firewall dokonuje DNAT zmieniając adres docelowy ze swojego na adres serwera HTTP (192.168.1.10). Pakiet zostaje przekazany do serwera www (przez interfejs eth1).
4. Serwer www odbiera pakiet i tworzy odpowiedź w postaci nowego pakietu. Ponieważ adres, na który ma odpowiedzieć nie należy do jego sieci (90.2.2.2) przesyła pakiet na bramę domyślną 192.168.1.1 (wewnętrzny adres naszego routera).
5. Router odbiera pakiet (na interfejsie eth1) i odwraca proces DNAT zamieniając w nim adres źródłowy serwera www (192.168.1.10) na swój adres (80.1.2.3).
6. Pakiet zostaje wysłany (interfejs eth0) i dociera do klienta. Klient otrzymał pakiet z prawidłowym adresem źródłowym naszego routera - pod ten adres wysłał żądanie.
Teraz sytuacja wewnątrz sieci:
1. Klient LAN (192.168.1.20) wysyła żądanie na adres publiczny naszego serwera www (80.1.2.3). Ponieważ adres nie znajduje się w sieci klienta, przesyła je na bramę domyślną 192.168.1.1.
2. Pakiet klienta dociera do naszego routera (na interfejs eth1).
3. Firewall dokonuje DNAT zmieniając adres docelowy na 192.168.1.10. Pakiet zostaje przekazany do serwera www (przez interfejs eth1).
4. Serwer www odbiera pakiet i tworzy odpowiedź w postaci nowego pakietu. Ponieważ adres, na który odpowiada (192.168.1.20) znajduje się w tej samej sieci wysyła go bezpośrednio do klienta LAN (nie odsyła do routera).
5. Klient otrzymuje pakiet od 192.168.1.10 (zamiast od routera). Dla klienta jest to zupełnie niespodziewany pakiet więc go odrzuca (nie wysyłał żądania do 192.168.1.10 tylko do 80.1.2.3). Klient bezskutecznie czeka na odpowiedź z 80.1.2.3.
Aby to poprawić musimy posłużyć się zmianą adresu źródłowego (SNAT) na wewnętrzny adres naszego routera:
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.10 --dport 80 -j SNAT --to-source 192.168.1.1