LINUX.ORG.RU
ФорумAdmin

iptable+vpn+iproute

 , , ,


0

3

Доброго времени суток!

Проблема с перенаправлением трафика в определенный интерфейс.

Есть 3 интерфейса + 2 VPN канала на один и тот же vpn-сервер через порты 1194 и 1195:

eth0 = LAN — ip 192.168.55.1

eth1 = WAN1 - 1.1.1.1(dhcp)

eth2 = WAN2 - 2.2.2.2(dhcp)

tun0 = VPN канал1 — ip(192.168.2.2 port 1194)

tun1 = VPN канал2 — ip(192.168.3.2 port 1195)

Надо

1. сделать так чтобы первый vpn тунель поднялся через eth1

1.1 сделать так чтобы все исходящие пакеты на порт 1194 шли через eth1

1.2 проверить на СЕРВЕРЕ что vpn подключился с клиентского ip eth1

2. сделать так чтобы второй vpn тунель поднялся через eth2

2.1 сделать так чтобы все исходящие пакеты на порт 1195 шли через eth2

2.2 проверить на СЕРВЕРЕ что vpn подключился с клиентского ip eth2

для этого Я делаю:

#сначала задаю таблицы в /etc/iproute2/rt_table 1194 vpn1194.out 1195 vpn1195.out

#добавляю роли

ip rule add fwmark 1194 table vpn1194.out

ip rule add fwmark 1195 table vpn1195.out

#Задаю маршрут

/sbin/ip route add default dev eth1 table vpn1194.out

/sbin/ip route add default dev eth2 table vpn1195.out

iptables -t mangle -A OUTPUT -p udp -m udp --dport 1194 -j MARK --set-mark 1194

iptables -t mangle -A OUTPUT -p udp -m udp --dport 1194 -j LOG --log-prefix «udp 1194 CONNMARK 1»

iptables -t mangle -A OUTPUT -p udp -m udp --dport 1195 -j MARK --set-mark 1195

iptables -t mangle -A OUTPUT -p udp -m udp --dport 1195 -j LOG --log-prefix «udp 1195 CONNMARK 2»

маркируются все отлично.

Chain OUTPUT (policy ACCEPT 7587 packets, 760053 bytes)

pkts bytes target prot opt in out source destination

686 110402 MARK udp — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194 MARK set 0x4aa

686 110402 LOG udp — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194 LOG flags 0 level 4 prefix `udp 1194 CONNMARK 1'

161 15776 MARK udp — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1195 MARK set 0x4ab

161 15776 LOG udp — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1195 LOG flags 0 level 4 prefix `udp 1195 CONNMARK 2'

В логах пишет что маркируется

Apr 1 16:28:07 gwital kernel: [ 3008.803488] udp 1194 CONNMARK 1IN= OUT=eth2 SRC=192.168.1.33 DST=109.195.86.203 LEN=89 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=48533 DPT=1194 LEN=69 MARK=0x4aa

Apr 1 16:28:09 gwital kernel: [ 3010.330899] udp 1195 CONNMARK 2IN= OUT=eth2 SRC=192.168.1.33 DST=109.195.86.203 LEN=70 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=57522 DPT=1195 LEN=50 MARK=0x4ab

далее делаю на POSTROUTE iptables -t nat -A POSTROUTING -p udp -m udp --dport 1194 -j SNAT --to-source 192.168.1.33

iptables -t nat -A POSTROUTING -p udp -m udp --dport 1194 -j LOG --log-prefix «udp 1194 marking out 1»

iptables -t nat -A POSTROUTING -p udp -m udp --dport 1195 -j SNAT --to-source 10.0.0.10

iptables -t nat -A POSTROUTING -p udp -m udp --dport 1195 -j LOG --log-prefix «udp 1195 marking out 2»

ЛОГИ для POSTROUTING

Chain POSTROUTING (policy ACCEPT 1 packets, 60 bytes)

pkts bytes target prot opt in out source destination

0 0 SNAT udp — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194 to:192.168.1.33

0 0 LOG udp — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194 LOG flags 0 level 4 prefix `udp 1194 marking out 1'

но туннель не поднимается... Кто нибудь когда нибудь делал на подобие этого?

Может в POSTROUTING не так делаю?

Дайте мне совет что надо делать и что Я не так делаю?

/sbin/ip route add default dev eth1 table vpn1194.out
/sbin/ip route add default dev eth2 table vpn1195.out

Вот лажа написана - не указан шлюз.

Маршрутизация через устройство нормально работает только для P-t-P устройств, которым eth не является.

Раз у тебя eth{1,2} это wan и с dhcp, значит нужно править скрипты dhcp-клиента. Шлюз по-умолчанию нужно устанавливать не только в main, но и в таблицы vpn119[45].out.

vel ★★★★★ ()
Ответ на: комментарий от vel
/sbin/ip route add default dev eth1 table vpn1194.out[br]
/sbin/ip route add default dev eth2 table vpn1195.out

добавил на каждую таблицу по шлюзу. допустим шлюз1(1.1.1.1) и шлюз2 (2.2.2.2)

/sbin/ip route add default via 1.1.1.1 dev  eth1 table vpn1194.out[br]
/sbin/ip route add default via 2.2.2.2dev eth2 table vpn1195.out

уходит только через первый шлюз если убираю шлюзы на main то ваще интернет пропадает. т.е. либо таблицу не видят пакеты либо не знаю...

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

Проверь, метки устанавливаемые в iptables и проверяемые в «ip ro» должны быть в hex-е. Там где-то нужно писать 0x префикс, а где-то оно по-умолчанию в hex.

«ip ro get XXX» в помощь.

и еще - старые ядра должны были быть собраны с какой-то опцией CONFIG_IP_ROUTE_FWMARK.

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

Спасибо за ответ. решил обходить трудность ). через 3-й компьютер. он перенаправляет 2-й порт.

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