pf-nat & muiltipath
Добавлено: 2017-06-19 9:19:01
Все привет!
Имеем - openBSD 6.1. Настроен multipath на два интерфейса :
#ifconfig pppoe0
#ifconfig pppoe1
#route show :
#sysctl -a :
#cat /etc/pf.conf
Из локальной сети NAT работает отлично, пакеты ходят сразу на два интерфейса и ip заменяется на внешний.
Проблема в том, что как только я использую например rtorrent или transmission на сервере, в пакетах на интерейфесе pppoe1 ip не заменяется, а идет с pppoe0 :
#tcpdump -ni pppoe1
Т.е. транзитный трафик натится, а с локалхоста получается что нет. Что я делаю не так ? Помогите написать правило.
#uname -rsvp
Имеем - openBSD 6.1. Настроен multipath на два интерфейса :
#ifconfig pppoe0
Код: Выделить всё
pppoe0: flags=208851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6> mtu 1492
index 36 priority 0 llprio 3
dev: em1 state: session
sid: 0x1 PADI retries: 0 PADR retries: 0 time: 3d 11:43:40
sppp: phase network authproto chap authname "XXXXXXXXX"
groups: pppoe egress
status: active
inet6 fe80::80de:c984:7711:4488%pppoe0 -> prefixlen 64 scopeid 0x24
inet 46.146.232.XXX --> XXX.XXX.XXX.XXX netmask 0xffffffff
Код: Выделить всё
pppoe1: flags=208851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST,AUTOCONF6> mtu 1492
index 38 priority 0 llprio 3
dev: em2 state: session
sid: 0x13a PADI retries: 0 PADR retries: 0 time: 3d 11:42:18
sppp: phase network authproto pap authname "XXXXXXXXX"
groups: pppoe egress
status: active
inet6 fe80::80de:c984:7711:4488%pppoe1 -> prefixlen 64 scopeid 0x26
inet 178.47.140.XXX --> XXX.XXX.XXX.XXX netmask 0xffffffff
#route show :
Код: Выделить всё
Internet:
Destination Gateway Flags Refs Use Mtu Prio Iface
default XXX.XXX.XXX.XXX UGSP 368 65825941 - 8 pppoe0
default XXX.XXX.XXX.XXX UGSP 129 86899766 - 8 pppoe1
Код: Выделить всё
net.inet.ip.forwarding=1
net.inet.ip.mforwarding=1
net.inet6.ip6.forwarding=1
net.inet6.ip6.mforwarding=1
net.inet.ip.multipath=1
net.inet6.ip6.multipath=1
#cat /etc/pf.conf
Код: Выделить всё
intif = "em0"
extif = "pppoe0"
extif2 = "pppoe1"
table <lan> { 192.168.10.0/24 !192.168.10.1 }
set skip on { lo }
match in all scrub (no-df)
match on pppoe0 all scrub (max-mss 1440)
match on pppoe1 all scrub (max-mss 1440)
pass all flags S/SA
match out on em2 from <lan> to any nat-to (em2) round-robin
match out on pppoe0 inet from 178.47.140.XXX to any nat-to (pppoe0) round-robin
match out on pppoe0 inet from <lan> to any nat-to (pppoe0) round-robin
match out on pppoe1 inet from 46.146.232.XXX to any nat-to (pppoe1) round-robin
match out on pppoe1 inet from <lan> to any nat-to (pppoe1) round-robin
match out on pppoe0 inet from 192.168.10.254 to any nat-to (pppoe0) round-robin static-port
match out on pppoe1 inet from 192.168.10.254 to any nat-to (pppoe1) round-robin static-port
match in on pppoe0 inet proto tcp from any to 46.146.232.XXX port = 443 rdr-to (pppoe0) port 22 round-robin
match in on pppoe1 inet proto tcp from any to 178.47.140.XXX port = 443 rdr-to (pppoe1) port 22 round-robin
match in on pppoe0 inet proto udp from any to 46.146.232.XXX port = 5060 rdr-to 192.168.10.254
match in on pppoe0 inet proto udp from any to 46.146.232.XXX port 10000:20000 rdr-to 192.168.10.254
match in on pppoe1 inet proto udp from any to 178.47.140.XXX port = 5060 rdr-to 192.168.10.254
match in on pppoe1 inet proto udp from any to 178.47.140.XXX port 10000:20000 rdr-to 192.168.10.254
Проблема в том, что как только я использую например rtorrent или transmission на сервере, в пакетах на интерейфесе pppoe1 ip не заменяется, а идет с pppoe0 :
#tcpdump -ni pppoe1
Код: Выделить всё
11:04:03.589417 46.146.232.XXX.6890 > 88.123.170.114.46475: . ack 312256 win 535 <nop,nop,timestamp 631086195 1768427598,nop,nop,sack 1 {315112:316540} >
#uname -rsvp
Код: Выделить всё
OpenBSD 6.1 GENERIC.MP#20 amd64