URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 4694
[ Назад ]

Исходное сообщение
"PF не работает rdr упорно ((("

Отправлено nicola14753 , 20-Сен-10 16:17 
Пытаюсь настроить новый шлюз на базе FreeBSD + PF

PF заменательно работает и даже rdr отрабатывает завозачивая запрос на проксю на внутреннем интерфейсе но когда дело касается прослушивания внешнего порта и проброски на локальную машину затыкается. Помогите ПЛЗ ???

pfctl -ss
serv# pfctl -ss

No ALTQ support in kernel
ALTQ related functions disabled
all tcp 192.168.1.77:21 <- 192.168.1.79:1183       ESTABLISHED:ESTABLISHED
all udp 192.168.1.255:137 <- 192.168.1.100:137       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:137 <- 192.168.1.198:137       NO_TRAFFIC:SINGLE
all tcp 195.239.111.59:5222 <- 192.168.1.152:1043       ESTABLISHED:ESTABLISHED
all tcp 192.168.1.152:1043 -> 85.113.204.19:63181 -> 195.239.111.59:5222       ESTABLISHED:ESTABLISHED
all tcp 205.188.5.81:5190 <- 192.168.1.152:1046       ESTABLISHED:ESTABLISHED
all tcp 192.168.1.152:1046 -> 85.113.204.19:50691 -> 205.188.5.81:5190       ESTABLISHED:ESTABLISHED
all tcp 217.15.142.234:22 <- 192.168.1.152:1053       FIN_WAIT_2:FIN_WAIT_2
all tcp 192.168.1.152:1053 -> 85.113.204.19:63262 -> 217.15.142.234:22       FIN_WAIT_2:FIN_WAIT_2
all tcp 217.15.142.234:21 <- 192.168.1.152:1060       TIME_WAIT:TIME_WAIT
all tcp 192.168.1.152:1060 -> 85.113.204.19:62587 -> 217.15.142.234:21       TIME_WAIT:TIME_WAIT
all udp 192.168.1.255:137 <- 192.168.1.188:137       NO_TRAFFIC:SINGLE
all tcp 192.168.1.77:445 <- 192.168.1.123:3233       TIME_WAIT:TIME_WAIT
all tcp 127.0.0.1:3128 <- 63.245.209.93:80 <- 192.168.1.152:1069       FIN_WAIT_2:FIN_WAIT_2
all tcp 127.0.0.1:3128 <- 77.67.20.16:80 <- 192.168.1.152:1071       FIN_WAIT_2:FIN_WAIT_2
all tcp 85.113.204.19:57886 -> 77.67.20.17:80       FIN_WAIT_2:FIN_WAIT_2
all tcp 127.0.0.1:3128 <- 212.58.246.91:80 <- 192.168.1.152:1073       FIN_WAIT_2:FIN_WAIT_2
all tcp 85.113.204.19:41303 -> 212.58.246.91:80       FIN_WAIT_2:FIN_WAIT_2
all tcp 127.0.0.1:3128 <- 77.67.20.26:80 <- 192.168.1.152:1075       FIN_WAIT_2:FIN_WAIT_2
all tcp 85.113.204.19:50120 -> 77.67.20.41:80       FIN_WAIT_2:FIN_WAIT_2
all tcp 192.168.1.77:23 <- 192.168.1.79:1876       ESTABLISHED:ESTABLISHED
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1077       FIN_WAIT_2:FIN_WAIT_2
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1079       TIME_WAIT:TIME_WAIT
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1081       TIME_WAIT:TIME_WAIT
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1083       TIME_WAIT:TIME_WAIT
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1090       FIN_WAIT_2:FIN_WAIT_2
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1093       TIME_WAIT:TIME_WAIT
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1095       FIN_WAIT_2:FIN_WAIT_2
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1097       TIME_WAIT:TIME_WAIT
all udp 192.168.1.255:138 <- 192.168.1.30:138       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:137 <- 192.168.1.141:137       NO_TRAFFIC:SINGLE
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1099       TIME_WAIT:TIME_WAIT
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1101       TIME_WAIT:TIME_WAIT
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1108       FIN_WAIT_2:FIN_WAIT_2
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1109       FIN_WAIT_2:FIN_WAIT_2
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1107       FIN_WAIT_2:FIN_WAIT_2
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1112       FIN_WAIT_2:FIN_WAIT_2
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1113       FIN_WAIT_2:FIN_WAIT_2
all udp 192.168.1.255:138 <- 192.168.1.112:138       NO_TRAFFIC:SINGLE
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1115       TIME_WAIT:TIME_WAIT
all tcp 127.0.0.1:3128 <- 192.168.1.77:80 <- 192.168.1.152:1117       FIN_WAIT_2:FIN_WAIT_2
all udp 192.168.1.255:137 <- 192.168.1.6:137       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.121:138       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.137:138       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.110:138       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.155:138       NO_TRAFFIC:SINGLE
all tcp 192.168.1.79:3389 <- 85.113.204.19:3389 <- 217.15.140.70:57261       PROXY:DST
all tcp 217.15.140.70:57261 -> 192.168.1.79:3389       SYN_SENT:CLOSED
all udp 192.168.1.255:137 <- 192.168.1.136:137       NO_TRAFFIC:SINGLE

сам pf.conf
ext_if = "em0"  # macro for external interface - use tun0 for PPPoE
int_if = "em1"  # macro for internal interface
lan_net = "192.168.1.0/24"
table <firewall> const {"внешка"}
table <users> persist file "/etc/nat.conf"
table <blacklist> persist file "/etc/black.list"
tcp_ports="{20,21,23,80,443,25,110,465,995,1494,1495,2106,3182,3050,3306,3389,3724,4020,4899,5190,7777,8000,8080,8083,8086}"
tcp_port_in="{ 20,21,22,23,3389 }"
terminal="192.168.1.79/32"
rdr on $int_if inet proto tcp from <users> to any port www -> 127.0.0.1 port 3128
#rdr on $ext_if inet proto tcp from any to any port 23 -> 192.168.1.15
nat on $ext_if from <users> to any -> ($ext_if)
rdr on $ext_if proto tcp from any to any port rdp -> $terminal
#rdr pass on $ext_if proto {tcp} to any port 23 -> 192.168.1.15
#rdr on $ext_if proto tcp from any to any port 3389 -> 192.168.1.79    
# не фильтровать трафик на кольцевом интерфейсе
set skip on lo0

# нормализовать входящие пакеты
#scrub in all

# установка политики по умолчанию
block all

# активировать спуфинг защиту для всех интерфейсов
block in quick from urpf-failed

# разрешить ssh соединения только из локальной сети доверенного
# компьютера, 192.168.0.15. Используйте "block return" для того чтобы
# высылался TCP флаг RST для закрытия блокированных соединений немедленно.
# используйте "quick" чтобы правило не было перекрыто правилами расположенными
# ниже.
block return in quick on $int_if proto tcp from ! <users> \
   to $int_if port $tcp_ports

# пропускать весь трафик в и из локальной сети.
# эти правила будут создавать записи в таблице состояний,
# благодаря дефолтной опции "keep state", которая будет применена
# автоматически
pass in  on $int_if from $lan_net to any
pass out on $int_if from any to $lan_net

# выпустить tcp, udp и icmp трафик на внешнем (Интернет) интерфейсе.
# tcp соединения буду модулироваться, udp/icmp будут отслеживаться
# по таблице состояний.
pass out on $ext_if proto { tcp udp icmp } to any modulate state

# разрешить входящие ssh соединения на внешнем интерфейсе, если они НЕ
# предназначены брандмауэру (например, они предназначены машине внутри
# сети). Логировать инициализационный пакет, так чтобы позже мы смогли
# сказать кто пытался соединиться. используйте tcp syn proxy для проксирования
# соединения. Флаг "S/SA" используемый по умолчанию будет автоматически
# применён к правилу.
pass in log on $ext_if proto tcp from any to ! <firewall> \
   port $tcp_port_in synproxy state

pass in log on $ext_if proto tcp from any to $terminal port rdp flags S/SA synproxy state
pass in inet proto icmp all
#block all
#block out on $ext_if all
#pass out quick on $ext_if from <users> keep state
#pass in on $ext_if proto tcp from any to $ext_if port 23 \
   rdr-to <firewall> port 23


Содержание

Сообщения в этом обсуждении
"PF не работает rdr упорно ((("
Отправлено Ingoa , 20-Сен-10 17:39 

Попробуй вот эту строку заменить
- pass in log on $ext_if proto tcp from any to $terminal port rdp flags S/SA synproxy state
+ pass in log on $ext_if proto tcp from any to $terminal port rdp flags S/SA modulate state


"PF не работает rdr упорно ((("
Отправлено nicola14753 , 21-Сен-10 07:48 
>
>Попробуй вот эту строку заменить
>- pass in log on $ext_if proto tcp from any to $terminal
>port rdp flags S/SA synproxy state
>+ pass in log on $ext_if proto tcp from any to $terminal
>port rdp flags S/SA modulate state

Ситуация не изменилась

serv# pfctl -ss
No ALTQ support in kernel
ALTQ related functions disabled
all tcp 127.0.0.1:3128 <- 93.191.13.103:80 <- 192.168.1.79:1030       TIME_WAIT:TIME_WAIT
all udp 192.168.1.255:137 <- 192.168.1.182:137       NO_TRAFFIC:SINGLE
all tcp 192.168.1.77:22 <- 192.168.1.79:1051       ESTABLISHED:ESTABLISHED
all tcp 127.0.0.1:3128 <- 93.191.13.103:80 <- 192.168.1.79:1061       ESTABLISHED:ESTABLISHED
all tcp 85.113.204.19:21033 -> 93.191.13.103:80       ESTABLISHED:ESTABLISHED
all udp 192.168.1.255:137 <- 192.168.1.180:137       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:137 <- 192.168.1.162:137       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:137 <- 192.168.1.139:137       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.34:138       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.139:138       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:137 <- 192.168.1.150:137       NO_TRAFFIC:SINGLE
all tcp 192.168.1.79:3389 <- 85.113.204.19:3389 <- 217.15.140.70:50535       CLOSED:SYN_SENT
all tcp 217.15.140.70:50535 -> 192.168.1.79:3389       SYN_SENT:CLOSED


"PF не работает rdr упорно ((("
Отправлено Ingoa , 21-Сен-10 10:00 
>>
>>Попробуй вот эту строку заменить
>>- pass in log on $ext_if proto tcp from any to $terminal
>>port rdp flags S/SA synproxy state
>>+ pass in log on $ext_if proto tcp from any to $terminal
>>port rdp flags S/SA modulate state
>
>Ситуация не изменилась
>

Очень странно... Вот у меня в общем-то аналогичная ситуация- прокидываю http внутрь приватной сетки

ext_if="em1"
int_if="em0"
internal_net="192.168.1.0/24"
...
rdr on $ext_if inet proto tcp from any to ($ext_if) port 8888 -> \
        192.168.1.134 port 80
...
pass in quick on $ext_if inet proto tcp from any \
    to 192.168.1.134 port 80 keep state
...
pass out on $int_if inet proto tcp from any to $internal_net modulate state
pass out on $int_if inet proto { udp, icmp } from any to $internal_net keep state
...
Все работает без проблем. фря 6.4
дефолтный block all


"PF не работает rdr упорно ((("
Отправлено Ingoa , 21-Сен-10 10:05 
# выпустить tcp, udp и icmp трафик на внешнем (Интернет) интерфейсе.
# tcp соединения буду модулироваться, udp/icmp будут отслеживаться
# по таблице состояний.
pass out on $ext_if proto { tcp udp icmp } to any modulate state

Мне кажется, что тут проблема. По-крайне мере, в 6.4 modulate state может быть применен только для tcp-трафика. Для icmp и udp только keep state. Может правило не раскрывается, но и не выдает ошибку при компиляции


"PF не работает rdr упорно ((("
Отправлено sage444 , 21-Сен-10 09:44 
>rdr on $ext_if proto tcp from any to any port rdp -> $terminal

здесь попробуйте точно указать to ($ext_if)

>pass in log on $ext_if proto tcp from any to $terminal port rdp flags S/SA synproxy state

и здесь to $terminal как-то неправильно, думаю надо тоже  to ($ext_if)



"PF не работает rdr упорно ((("
Отправлено guest , 21-Сен-10 11:57 
>pass in log on $ext_if proto tcp from any to $terminal port rdp flags S/SA synproxy state

Еще надо разрешить прохождение этих пакетиков на $int_if
pass out on $int_if inet proto tcp from any to $terminal port rdp


"PF не работает rdr упорно ((("
Отправлено nicola14753 , 21-Сен-10 12:57 
>>pass in log on $ext_if proto tcp from any to $terminal port rdp flags S/SA synproxy state
>
>Еще надо разрешить прохождение этих пакетиков на $int_if
>pass out on $int_if inet proto tcp from any to $terminal port
>rdp

Разрешил и все равно

all udp 192.168.1.255:137 <- 192.168.1.198:137       NO_TRAFFIC:SINGLE
all tcp 192.168.1.77:22 <- 192.168.1.79:3542       ESTABLISHED:ESTABLISHED
all udp 192.168.1.255:137 <- 192.168.1.8:137       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:137 <- 192.168.1.136:137       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:137 <- 192.168.1.175:137       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.12:138       NO_TRAFFIC:SINGLE
all tcp 192.168.1.79:3389 <- 85.113.204.19:3389 <- 217.15.140.70:61525       PROXY:DST
all tcp 217.15.140.70:61525 -> 192.168.1.79:3389       SYN_SENT:CLOSED
all udp 192.168.1.255:137 <- 192.168.1.87:137       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.143:138       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.28:138       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.6:138       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.23:138       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:137 <- 192.168.1.10:137       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.10:138       NO_TRAFFIC:SINGLE
all udp 192.168.1.255:138 <- 192.168.1.112:138       NO_TRAFFIC:SINGLE



"PF не работает rdr упорно ((("
Отправлено nicola14753 , 21-Сен-10 15:06 
попробовал разделить правило
# выпустить tcp, udp и icmp трафик на внешнем (Интернет) интерфейсе.
# tcp соединения буду модулироваться, udp/icmp будут отслеживаться
# по таблице состояний.
pass out on $ext_if proto { tcp udp icmp } to any modulate state
на
pass out on $ext_if proto { tcp } to any modulate state
pass out on $ext_if proto {udp icmp } to any keep state

результат тот же(((


"PF не работает rdr упорно ((("
Отправлено Кирилл_Н , 21-Сен-10 18:56 
>[оверквотинг удален]
># по таблице состояний.
>pass out on $ext_if proto { tcp udp icmp } to any
>modulate state
>на
>pass out on $ext_if proto { tcp } to any modulate state
>
>pass out on $ext_if proto {udp icmp } to any keep state
>
>
>результат тот же(((

адрес $terminal есть в таблице users? может проблема как раз в пакете, который возвращается клиенту - для него просто не работает нат. посмотрите тисипидампом на внешнем и внутренем интерфейсах трафик при обращении к этому порту


"PF не работает rdr упорно ((("
Отправлено nicola14753 , 27-Сен-10 17:08 
>[оверквотинг удален]
>>
>>pass out on $ext_if proto {udp icmp } to any keep state
>>
>>
>>результат тот же(((
>
>адрес $terminal есть в таблице users? может проблема как раз в пакете,
>который возвращается клиенту - для него просто не работает нат. посмотрите
>тисипидампом на внешнем и внутренем интерфейсах трафик при обращении к этому
>порту

Сделали помогло открытие ната на внутреннем интерфейсе
nat on $int_if from any to $terminal port rdp -> $int_if