Dotychczas router (pod kontrolą OpenBSD 4.3) pracował głównie jako NAT (maszyny w DMZ, reguły rdr i nat oraz pass / block do nich), ale zaszła potrzeba wydzielenia segmentu sieci dla klientów i routowania adresów.
No i pojawił się problem (moje niedopatrzenie). Głównie za sprawą TCP window scaling. Trzeba pamiętać, że od wersji 4.1 OpenBSD domyślne flagi dla reguł TCP to flags S/SA, a każda reguła tworzy stan, kiedy pakiet pasuje do niej (keep state). Ja zapomniałem o tym na chwilę i coś przestało się łączyć, gdzieś pakiety ginęły i ogólnie ‘siwy dym’.
Reasumując pakiety wchodzące na zewnętrznym interfejsie wpuszczamy. Pakiety wchodzące na wewnętrznym interfejsie wpuszczamy. Pakiety wychodzące na wewnętrznym interfejsie też musimy puszczać z flags S/SA keep state.
Tagi: OpenBSD, pf, TCP window scaling