И вот потребовалась работа машин за шлюзом с внешним ftp-сервером. Установил frox завернул на него трафик идущий на 21 порт внутреннего интерфейса. Все работает. Осталось написать правила для pf.
Попытался разобраться с работой frox и pf и вот что примерно у меня получилось.
Тут $net_if=ng0 - интерфейс смотрящий в интернет, $int_if=rl1 - интерфейс смотрящий в локалку. 192.168.1.1 - IP адрес внутреннего интерфейса, 192.168.1.2 - компьютер локальной сети, 192.168.2.1 - alias на локальном интерфейсе - адрес который слушает frox, 94.24.180.230 - динамический IP на интернет интерфейсе.
Кто подскажет? После того как frox откорректирует пакет на отправку в интернет (строка 70,280), он примет вид как в (строке 80,290). Какой порт поставит frox в место xxxx? Будет ли пакет снова проходить по правилам pf до того как он будет отправлен через gateway на интернет интерфейс? Если да, то каким должно быть правило 300, 410? Да и правило 340 я тоже считаю не корректным так как оно разрешает весь исходящий трафик в интернет. Как его можно заменить? Для обеспечения должной безопасности?
Код: Выделить всё
10 Пакет приходит из локальной сети на внутрений интерфейс
20 IN 192.168.1.2 port 13123 > 87.51.34.132 port 21 | rl1
30 pass in on $int_if proto tcp from 192.168.1.2 to any port 21 modulate state
40 rdr on $int if proto tcp from any to any port 21 -> 192.168.2.1 port 2121
50 IN 192.168.1.2 port 13123 > 192.168.2.1 port 2121 | rl1
60 pass in on $int_if proto tcp from 192.168.1.2 to 192.168.2.1 modulate state
70 <-<-< frox >->->
80 IN 192.168.1.2 port xxxx > 87.51.34.132 port 21 | rl1
90 pass in on $int_if proto tcp from 192.168.1.2 to any port 21 modulate state
100 <-<-< gateway >->->->
110 <-<-< NAT >->->->
120 OUT 94.24.180.230 port 58532 > 87.51.34.132 port 21 | ng0
130 pass out on $net if proto tcp from ($net if) to any port 21 modulate state
140 <-<-< Internet >->->
150 IN 87.51.34.132 port 21 > 94.24.180.230 port 58532 | ng0
160 modulate state правило 130
170 <-<-< NAT >->->->
180 <-<-< Gateway >->->
190 OUT 87.51.34.132 port 21 > 192.168.1.2 port xxxx | rl1
200 modulate state правило 90
210 <-<-< frox >->->
220 OUT 192.168.2.1 port 41826 > 192.168.1.2 port 13132 | rl1
230 modulate state правило 60
240 Уходит обратно в локальную сеть
Код: Выделить всё
250 Пакет приходит из локальной сети на внутрений интерфейс
260 IN 192.168.1.2 port 13132 > 192.168.2.1 port 41826 | rl1
270 pass in on $int_if proto tcp from 192.168.1.2 to 192.168.2.1 modulate state
280 <-<-< frox >->->
290 IN 192.168.1.2 port xxxx > 87.51.34.132 port zzzz(61893) | rl1
300 ????
310 <-<-< gateway >->->->
320 <-<-< NAT >->->->
330 OUT 94.24.180.230 port 58532 > 87.51.34.132 port zzzz(61893) | ng0
340 pass out on $net_if proto tcp from ($net_if) to any modulate state
350 <-<-< Internet >->->
360 IN 87.51.34.132 port zzzz(61893) > 94.24.180.230 port 58532 | ng0
160 modulate state правило 340
170 <-<-< NAT >->->->
180 <-<-< Gateway >->->
190 OUT 87.51.34.132 port zzzz(61893) > 192.168.1.2 port xxxx | rl1
200 ????
210 <-<-< frox >->->
220 OUT 192.168.2.1 port 41826 > 192.168.1.2 port 13132 | rl1
230 modulate state правило 270
240 Уходит обратно в локальную сеть