On 11.10.2018 16:40, Andrey A Lyubimets wrote: >> Это не проблема mpd5, ему совершенно всё равно и он у меня работает со >> множеством внешних каналов. >> >> Это проблема не настроенного PBR на роутере - чтобы ответы на запросы, >> пришедшие >> через недефолтный канал, уходили в него же, а не по дефолтному роутеру. > Извиняюсь, что написал сверхкратко, до ввода в заблуждение. > > У меня настроен PBR только средствами pf - pptp работает на обоих каналах > > правила pf для PBR выглядят так: > pass in on $ext_if_1 reply-to ($ext_if_1 $gw_1) inet to ($ext_if_1) tag > EXT_IF_A > pass in on $ext_if_1 inet from ($ext_if_1:network) to ($ext_if_1) > > pass in on $ext_if_2 reply-to ($ext_if_2 $gw_2) inet to ($ext_if_2) tag > EXT_IF_2 > pass in on $ext_if_2 inet from ($ext_if_2:network) to ($ext_if_2) > > pass in quick from ($ext_if_1:network) tagged EXT_IF_1 keep state > pass in quick reply-to ($ext_if_1 $gw_1) tagged EXT_IF_1 keep state > > pass in quick from ($ext_if_2:network) tagged EXT_IF_2 keep state > pass in quick reply-to ($ext_if_2 $gw_2) tagged EXT_IF_2 keep state > > pass out route-to ($ext_if_1 $gw_1) inet from $ext_addr_1 keep state > pass out route-to ($ext_if_2 $gw_2) inet from $ext_addr_2 keep state > > > pptp работает на обоих каналах, но при установке ipsec-соединения > > обмен пакетами с ракуном вижу, а ответных ipsec-пакетов нет: > > 14:21:14.590034 IP 80.x.x.x.59690 > 212.y.y.y.500: isakmp: phase 1 I ident > 14:21:14.597585 IP 212.y.y.y.500 > 80.x.x.x.59690: isakmp: phase 1 R ident > 14:21:14.606945 IP 80.x.x.x.59690 > 212.y.y.y.500: isakmp: phase 1 I ident > 14:21:14.614994 IP 212.y.y.y.500 > 80.x.x.x.59690: isakmp: phase 1 R ident > 14:21:14.619311 IP 80.x.x.x.60052 > 212.y.y.y.4500: NONESP-encap: > isakmp: phase 1 I ident[E] > 14:21:14.627155 IP 212.y.y.y.4500 > 80.x.x.x.60052: NONESP-encap: > isakmp: phase 1 R ident[E] > 14:21:14.630252 IP 80.x.x.x.60052 > 212.y.y.y.4500: NONESP-encap: > isakmp: phase 2/others I oakley-quick[E] > 14:21:14.639471 IP 212.y.y.y.4500 > 80.x.x.x.60052: NONESP-encap: > isakmp: phase 2/others R oakley-quick[E] > 14:21:14.640948 IP 80.x.x.x.60052 > 212.y.y.y.4500: NONESP-encap: > isakmp: phase 2/others I oakley-quick[E] > 14:21:14.653265 IP 80.x.x.x.60052 > 212.y.y.y.4500: UDP-encap: > ESP(spi=0x0d18e3ea,seq=0x1), length 164 > 14:21:15.649011 IP 80.x.x.x.60052 > 212.y.y.y.4500: UDP-encap: > ESP(spi=0x0d18e3ea,seq=0x2), length 164 > 14:21:17.648743 IP 80.x.x.x.60052 > 212.y.y.y.4500: UDP-encap: > ESP(spi=0x0d18e3ea,seq=0x3), length 164 > 14:21:21.648771 IP 80.x.x.x.60052 > 212.y.y.y.4500: UDP-encap: > ESP(spi=0x0d18e3ea,seq=0x4), length 164 > 14:21:29.648306 IP 80.x.x.x.60052 > 212.y.y.y.4500: UDP-encap: > ESP(spi=0x0d18e3ea,seq=0x5), length 164 > 14:21:34.616983 IP 80.x.x.x.60052 > 212.y.y.y.4500: isakmp-nat-keep-alive > 14:21:39.647956 IP 80.x.x.x.60052 > 212.y.y.y.4500: UDP-encap: > ESP(spi=0x0d18e3ea,seq=0x6), length 164 > > если сделать route change default 212.y.y.y ,то соединение устанавливается.
Вывод - pf не заворачивает ESP-пакеты во второй канал. Видимо, ошибка в правилах. Я никогда не использовал pf и не понимаю его синтаксиса, так что точно не подскажу, но подозреваю, что какая-то проблема в правиле pass out route-to ($ext_if_2 $gw_2) inet from $ext_addr_2 keep state Зачем вообще нужен keep state? Никакие состояния тут не нужны, потому что всё однозначно - если пакет с $ext_addr_2, он безусловно должен идти в $ext_if_2 безо всяких стейтов. Соответственно, и для входящих правил тоже низачем не нужно отслеживание состояний - лишняя нагрузка на CPU и забивание памяти таблицами состояний. Состояния нужно отслеживать только если пакет проходит NAT, а для терминируемого на самом роутере трафика всё это лишнее. _______________________________________________ freebsd mailing list [email protected] http://mailman.uafug.org.ua/mailman/listinfo/freebsd
