LINUX.ORG.RU
решено ФорумAdmin

openWRT, policy base routing не работает для локальных адресов

 , ,


0

1

Здравствуйте!

Помогите, пожалуйста, разобраться с конфигурацией pbr. Марщрутизатор под OpenWrt (Chaos Calmer 15.05.1) подключен к Интернет по 4G с серым ip. В lan сегменте (192.168.52.0/24) есть несколько устройств с tcp сервисами (80, 443, 22), для их публикации в Интернет поднят vpn канал (pptp) к vpn серверу c белым статическим ip. На этом vpn сервере есть свой lan сегмент 192.168.89.0/24 и на этом же сервере опубликованы сервисы из 192.168.52.0/24, сети 192.168.89.0/24 и 192.168.52.0/24 марщрутизируются по статике.

На openWRT по ряду причин dgw оставлен на br-wan (т.е. по 4G), поэтому при установлении соединения из Интернет к lan сервисам (пакеты приходят на интерфес pptp-vpn) нужно, обеспечить маршрутизаци через vpn интерфейс, а не через dgw. Прописывать статические маршруты к таким источникам соединений можно и работает, но по сути это плохо, т.к. фиксируем - с каких интернет ip возможно обращение на сервисы. Конфигурирую маркировку пакетов/соединений и маршрутизацию по правилам, собственно конфигурация:

root@OpenWrt:/#ifconfig
br-lan		Link encap:Ethetnet	HWaddr 00:0C:29:FD:63:B2
		inet addr:192.168.52.1	Bcast:192.168.52.255 Mask 255.255.255.0
		UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

br-wan		Link encap:Ethetnet	HWaddr 00:0C:29:FD:63:BC
		inet addr:172.20.95.128	Bcast:172.20.255.255 Mask 255.255.0.0
		UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth0		Link encap:Ethetnet	HWaddr 00:0C:29:FD:63:B2
		UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

eth1		Link encap:Ethetnet	HWaddr 00:0C:29:FD:63:BC
		UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

lo		Link encap:Local Loopback
		inet addr:127.0.0.1  Mask:255.0.0.0
		UP LOOPBACK RUNNING MTU:65536  Metric:1

pptp-vpn	Link encap:Poiunt-to-Point Protocol
		inet addr:192.168.89.2  P-t-P:192.168.89.1  Mask:255.255.255.0
		UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1420  Metric:1
root@OpenWrt:/#cat /etc/iproute2/rt_tables
#
# reserved values
#
255	local
254	main
253	default
0	unspec
#
# local
#
#1	inr.ruhep
100 vpntbl
root@OpenWrt:/ip route show table main 
default via 172.20.100.7 dev br-wan proto static src 172.20.95.128
84.115.18.248 via 172.20.100.7 dev br-wan proto static
192.168.52.0/24 dev br-lan proto kernel scope link src 192.168.52.1
192.168.89.0/24 dev pptp-vpn proto static scope link
192.168.89.1 dev pptp-vpn proto kernel scope link src 192.168.89.2

root@OpenWrt:/ip route show table vpntbl
default dev pptp-vpn scope link
192.168.52.0/24 dev br-lan proto kernel scope link src 192.168.52.1
192.168.89.0/24 dev pptp-vpn scope link

root@OpenWrt:/#ip rule show
0:	from all lookup 128
0:	from all fwmark 0x3 lookup vpntbl
1:	from all lookup local
32766:	from all lookup main
12767:	from all lookup default
root@OpenWrt:/#iptabels -t mangle -nL PREROUTING
target		prot	opt 	source 		destination
MARK		all	--	pptp-vpn	0.0.0.0/0	MARK set 0x3
CONNMARK	all	--	pptp-vpn	0.0.0.0/0	ctstate NEW CONNMARK save
CONNMARK	all	--	0.0.0.0/0	0.0.0.0/0	CONMARK restore
fwmark		all	--	0.0.0.0/0	0.0.0.0/0

root@OpenWrt:/#iptabels -t mangle -nL OUTPUT
target		prot	opt	source 		destination
CONNMARK	all	--	0.0.0.0/0	0.0.0.0/0	CONNMARK restore

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

Смотрю iptables (счётчики пакетов) и tcpdump на попытку установить соединение из Интернте к маршрутизатору. Первый пакет SYN (79.134.194.50.38944 > 192.168.52.1.80) приходит на интерфейс pptp-vpn, попадает в PREROUTING, но потом, вместо INPUT и далее локальному процессу попадает в цепочку FORWARD, далее в POSTROUTING, но далее генерируется серия ARP (Request who-has 192.168.52.1 tell 192.168.52.1) на интерфейсе br-lan. На этот запрос ответа нет, поэтому следует (172.20.95.128 > 79.134.194.50: ICMP host 192.168.52.1 unreachable) обратно на pptp-vpn, причём с неверным src адресом, должно быть 192.168.89.2 второи и третий пакет - аналогично, далее таймаут на инициализующей стороне.

root@OpenWrt:/#tcpdump -i pptp-vpn -nnnt

IP 79.134.194.50.38944 > 192.168.52.1.80: Flags [S], seq 340882049, win 8192, options [mss 1380,nop,wscale 8,nop,nop,sackOK], length 0
IP 172.20.95.128 > 79.134.194.50: ICMP host 192.168.52.1 unreachable, length 60
IP 79.134.194.50.38944 > 192.168.52.1.80: Flags [S], seq 340882049, win 8192, options [mss 1380,nop,wscale 8,nop,nop,sackOK], length 0
IP 172.20.95.128 > 79.134.194.50: ICMP host 192.168.52.1 unreachable, length 60
IP 79.134.194.50.38944 > 192.168.52.1.80: Flags [S], seq 340882049, win 8192, options [mss 1380,nop,nop,sackOK], length 0
IP 172.20.95.128 > 79.134.194.50: ICMP host 192.168.52.1 unreachable, length 56

root@OpenWrt:/#tcpdump -i br-lan -nnnt

ARP, Request who-has 192.168.52.1 tell 192.168.52.1, length 28
ARP, Request who-has 192.168.52.1 tell 192.168.52.1, length 28
ARP, Request who-has 192.168.52.1 tell 192.168.52.1, length 28
ARP, Request who-has 192.168.52.1 tell 192.168.52.1, length 28
ARP, Request who-has 192.168.52.1 tell 192.168.52.1, length 28
ARP, Request who-has 192.168.52.1 tell 192.168.52.1, length 28
ARP, Request who-has 192.168.52.1 tell 192.168.52.1, length 28
ARP, Request who-has 192.168.52.1 tell 192.168.52.1, length 28
ARP, Request who-has 192.168.52.1 tell 192.168.52.1, length 28
ARP, Request who-has 192.168.52.1 tell 192.168.52.1, length 28
ARP, Request who-has 192.168.52.1 tell 192.168.52.1, length 28
ARP, Request who-has 192.168.52.1 tell 192.168.52.1, length 28

Почему пакеты адресуемые маршрутизатору пытаются уйти в lan сегмент? Что неверно или чего не хватает в настройке марщрутизации для публикации 80 порта самого маршрутизатора в интернете через pptp-vpn?

Все не читай. То что бросилось в глаза, таблица local должна быть первой. А не то что вы сделали маркировку перед ней.

anc ★★★★★
()
Ответ на: комментарий от anc

Благодарю! поменял порядок:

root@OpenWrt:/#ip rule show
0:	from all lookup 128
1:	from all lookup local
100:	from all fwmark 0x3 lookup vpntbl
32766:	from all lookup main
12767:	from all lookup default

Получил нужный результат. Ваш взгляд по диагонали стоит моей недели чтения документации и форумов. Ещё раз – благодарю!

Loop2vo
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.