дано
em0(11.11.11.11), tun0(10.0.1.1), tun1(10.0.2.1).
tun0 и tun1 в одну и ту же сеть (через разных провайдеров).
10.10.10.0/24
сделано
11.11.11.11:10001 -> 10.10.10.1:80 через tun0
11.11.11.11:10002 -> 10.10.10.1:80 через tun0
Но работает это только, когда пакет приходит через em0.
Код: Выделить всё
# pf config
ext_if="em0"
ext_addr="11.11.11.11"
int_if="lo0"
tun_if1="tun0"
tun_addr1="10.0.1.1"
tun_if2="tun1"
tun_addr2="10.0.2.1"
nat on $tun_if1 from any to any -> $tun_addr1
nat on $tun_if2 from any to any -> $tun_addr2
rdr on $ext_if inet proto tcp to $ext_addr port 10001 tag G1 -> 10.10.10.1 80
rdr on $ext_if inet proto tcp to $ext_addr port 10002 tag G2 -> 10.10.10.1 80
rdr on $int_if inet proto tcp to $ext_addr port 10001 tag G1 -> 10.10.10.1 80
rdr on $int_if inet proto tcp to $ext_addr port 10002 tag G2 -> 10.10.10.1 80
pass in all
pass out all
pass in quick on $ext_if route-to ($tun_if1 $tun_addr1) tagged G1 keep state
pass in quick on $ext_if route-to ($tun_if2 $tun_addr2) tagged G2 keep state
pass out quick route-to ($tun_if1 $tun_addr1) from $tun_addr1
pass out quick route-to ($tun_if2 $tun_addr2) from $tun_addr2
Код: Выделить всё
# pfctl -ss | grep 80
No ALTQ support in kernel
ALTQ related functions disabled
all tcp 10.10.10.1:80 <- 11.11.11.11:10001 <- 11.11.11.11:30267 CLOSED:SYN_SENT
all tcp 11.11.11.11:30267 -> 10.0.1.1:52876 -> 10.10.10.1:80 TIME_WAIT:TIME_WAIT
Код: Выделить всё
# pfctl -ss | grep 80
No ALTQ support in kernel
ALTQ related functions disabled
all tcp 10.10.10.1:80 <- 11.11.11.11:10001 <- 12.12.12.12:63080 ESTABLISHED:ESTABLISHED
all tcp 12.12.12.12:63080 -> 10.0.1.1:55210 -> 10.10.10.1:80 ESTABLISHED:ESTABLISHED
Код: Выделить всё
20:14:17.385633 IP 10.0.1.1.52876 > 10.10.10.1:80: Flags [S], seq 4061748027, win 65535, options [mss 1460,nop,wscale 3,sackOK,TS val 1138808799 ecr 0], length 0
20:14:17.390086 IP 10.10.10.1:80 > 10.0.1.1.52876: Flags [S.], seq 3088984230, ack 4061748028, win 16384, options [mss 1380,nop,wscale
0,nop,nop,TS val 0 ecr 0,nop,nop,sackOK], length 0
20:14:17.390100 IP 10.0.1.1.52876 > 10.10.10.1:80: Flags [R], seq 4061748028, win 0, length 0
20:14:20.385016 IP 10.0.1.1.51130 > 10.10.10.1:80: Flags [S], seq 4061748027, win 65535, options [mss 1460,nop,wscale 3,sackOK,TS val
1138811799 ecr 0], length 0
20:14:20.387668 IP 10.10.10.1:80 > 10.0.1.1.51130: Flags [S.], seq 544987895, ack 4061748028, win 16384, options [mss 1380,nop,wscale
0,nop,nop,TS val 0 ecr 0,nop,nop,sackOK], length 0
20:14:20.387682 IP 10.0.1.1.51130 > 10.10.10.1:80: Flags [R], seq 4061748028, win 0, length 0
Код: Выделить всё
20:14:17.385612 IP 11.11.11.11.30267 > 11.11.11.11.10001: Flags [S], seq 4061748027, win 65535, options [mss 1460,nop,wscale 3,sackOK,TS val 1138808799 ecr 0], length 0
20:14:20.384998 IP 11.11.11.11.30267 > 11.11.11.11.10001: Flags [S], seq 4061748027, win 65535, options [mss 1460,nop,wscale 3,sackOK,TS val 1138811799 ecr 0], length 0
Насколько я понимаю, нет последнего преобразования из
dst10.0.1.1:52876 в dst11.11.11.11:30267. Хотя может что-то ещё.
Это баг или так и должно быть? И как можно решить проблему?
// 8.1-release, pf модулем.
