LINUX.ORG.RU
ФорумAdmin

Не работает MASQUERADE и SNAT для VPN


0

1

Привет All!
Есть задача настроить двойной ВПН, в принципе делал это много раз - всегдав все работало, сейчас возникли траблы.
Дано:
Server_1 - WAN_IP - 1.1.1.1
Server_2 - WAN_IP - 2.2.2.2

Настроил Server_1 ниже конфиг сервера

VPN_Server - tun0, IP to VPN net - 11.11.11.0/24
tun1 - VPN client to Server_2 - 10.3.0.0/24

local 1.1.1.1
port 8080
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 11.11.11.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
client-to-client
duplicate-cn
reneg-sec 36000
push redirect-gateway
keepalive 10 120
max-clients 200
user nobody
group nobody
persist-tun
persist-key
#status openvpn-status.log
#log /var/log/openvpn.log
verb 3
mute 15

##################################

Server_2 - настраиваю VPN сервер

ниже конфиг

local 2.2.2.2
port 8080
proto udp
dev tun
ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
key /etc/openvpn/easy-rsa/2.0/keys/server.key
dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

server 10.3.0.0 255.255.255.0
ifconfig-pool-persist /etc/openvpn/ipp.txt
client-to-client
duplicate-cn
reneg-sec 36000
keepalive 10 120
max-clients 200
user nobody
group nobody
persist-tun
persist-key
verb 3
mute 15
##################################

прописываю маршруты и прочее на Server_1

echo '150 vpn.out' >> /etc/iproute2/rt_tables

ip rule add fwmark 1 table vpn.out

iptables -t mangle -A PREROUTING -s 11.11.11.0/24 -i tun0 -j MARK --set-mark 1

iptables -t nat -A POSTROUTING -m mark --mark 1 -s 11.11.11.0/24 -o tun1 -j MASQUERADE

ip route add default dev tun1 table vpn.out
#######

ПРописываю маскарад на Server_2
iptables -t nat -A POSTROUTING -s 10.3.0.0/24 -o eth0 -j MASQUERADE
######################################

Проверяю все ли правильно прописалось на Server_1

[root@ client]# ip rule list
0: from all lookup local
32761: from all fwmark 0x1 lookup vpn.out
32762: from all fwmark 0x1 lookup vpn.out
32763: from all fwmark 0x1 lookup vpn.out
32764: from all fwmark 0x1 lookup vpn.out
32765: from all fwmark 0x1 lookup vpn.out
32766: from all lookup main
32767: from all lookup default
######
[root@ client]# ip route list table vpn.out
default dev tun1 scope link ---- тут tun1 - это интерфейс VPN клиента между Server_1 и Server_2
######
[root@ client]# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 46 packets, 8516 bytes)
pkts bytes target prot opt in out source destination

Chain INPUT (policy ACCEPT 34 packets, 7624 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 151 packets, 30687 bytes)
pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 151 packets, 30687 bytes)
pkts bytes target prot opt in out source destination
48 3352 MASQUERADE all  — * tun1 11.11.11.0/24 0.0.0.0/0 mark match 0x1
0 0 MASQUERADE all  — * tun1 11.11.11.0/24 0.0.0.0/0 mark match 0x1
######
[root@id879 client]# cat /proc/sys/net/ipv4/ip_forward ---- ip форвард включен
1
######

[root@ client]# ifconfig
eth0 Link encap:Ethernet HWaddr 38:60:77:25:8B:69
inet addr:1.1.1.1 Bcast:1.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::3a60:77ff:fe25:8b69/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:64015 errors:0 dropped:0 overruns:0 frame:0
TX packets:66660 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7316338 (6.9 MiB) TX bytes:8981051 (8.5 MiB)
Interrupt:44 Base address:0x6000

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1446 errors:0 dropped:0 overruns:0 frame:0
TX packets:1446 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:113386 (110.7 KiB) TX bytes:113386 (110.7 KiB)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:11.11.11.1 P-t-P:11.11.11.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:777 errors:0 dropped:0 overruns:0 frame:0
TX packets:75 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:66402 (64.8 KiB) TX bytes:9000 (8.7 KiB)

tun1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.3.0.6 P-t-P:10.3.0.5 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:169 errors:0 dropped:0 overruns:0 frame:0
TX packets:176 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:15414 (15.0 KiB) TX bytes:14922 (14.5 KiB)

##################################

Проверяю Server_2

[root@essen168 openvpn]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:1E:C9:3E:36:0E
inet addr:2.2.2.2 Bcast:2.2.2.255 Mask:255.255.255.0
inet6 addr: fe80::21e:c9ff:fe3e:360e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:27609 errors:0 dropped:0 overruns:0 frame:0
TX packets:7809 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2720503 (2.5 MiB) TX bytes:806397 (787.4 KiB)
Interrupt:11

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.3.0.1 P-t-P:10.3.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:61 errors:0 dropped:0 overruns:0 frame:0
TX packets:58 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:5178 (5.0 KiB) TX bytes:5246 (5.1 KiB)
#############
[root@essen168 openvpn]# cat /proc/sys/net/ipv4/ip_forward
1
#############
[root@essen168 openvpn]# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 909 packets, 59732 bytes)
pkts bytes target prot opt in out source destination

Chain POSTROUTING (policy ACCEPT 4 packets, 295 bytes)
pkts bytes target prot opt in out source destination
9 616 MASQUERADE all  — * eth0 10.3.0.0/24 0.0.0.0/0

Chain OUTPUT (policy ACCEPT 4 packets, 295 bytes)
pkts bytes target prot opt in out source destination
#############

Запускаю ВПН клиента у себя на компе - подключение проходит нормлаьно, нареканий нет, делаю трассу с клиентского компа с включенным ВПН - дальше второго сервер траффик не идет

C:\Documents and Settings\work>tracert 8.8.8.8

Трассировка маршрута к 8.8.8.8 с максимальным числом прыжков 30

1 417 ms 143 ms 133 ms 11.11.11.1
2 416 ms 146 ms 147 ms 10.3.0.1
3 * * * Превышен интервал ожидания для запроса.
4 * * * Превышен интервал ожидания для запроса.
5 * * * Превышен интервал ожидания для запроса.
6 * ^C
C:\Documents and Settings\work>

Не понимаю в чем проблема, понимаю что я где то туплю но уже мозг отказывается думать, помогите плиз - у кого какие мысли и идеи. Оба сервера полноценные дедики

Server_1 - CentOS release 6.2 (Final)
Server_2 - CentOS release 6.3 (Final)

Не отрабатывает маскарад на Server_2 хоть стреляй, пробовал вместо маскараа прописать SNAT - результат то же.

Deleted

Последнее исправление: Deleted (всего исправлений: 1)

Сразу бросается в глаза: ты метишь соединения, а ip rule работает на метках пакетов.

нужно метить пакеты меткой соединения

iptables -t mangle -A PREROUTING -s 11.11.11.0/24 -i tun0 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
router ★★★★★
()
Ответ на: комментарий от router

Честно не вижу надобности маркировать соединение, траффик между серверами ходит, на внешнем ВПН сервер - трафф не фильтруется а тупо маскарадится в мир, главное что бы трафф был из нужной подсети. Ну и тот факт что через первый сервер траффик идет кк положено - не наводит на какие либо подозрения, да и по такому принципу как выше изложил - делал много раз - проблем не возникало. Сейчас почитаю про CONNMARK - но не думаю что в нем дело

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

Проблема в следующем. Пойдёт обратно:

* ты делаешь MASQUERADE для tun1

* ты направляешь траффик в tun1 в таблице маршрутизации vpn.local

* ты направляешь в таблицу pvn.local трафик, помеченный меткой «1» ( здесь используется метка пакетов )

Но у тебя нет трафика, помеченного меткой «1». Т.к. ip rule в качетве метки берёт только метки пакетов. А ты ставишь метку на соединения. Поэтому здесь у тебя логический разрыв

* ты метишь некоторые соединения меткой «1»

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

Вобщем моя тупость меня убивает - решил проблему вот таким образом (кому интересно)

на сервере_1

echo 200 rta >> /etc/iproute2/rt_tables

ip rule add from 1.1.1.0/24 table rta

ip route add default dev tun1 table rta - в этом правиле я указал свой интерфейс на второй тунель - у меня это tun1

iptables -t nat -I POSTROUTING -s 1.1.1.0/24 -o tun1 -j MASQUERADE - тут я то же указал свой интерфейс tun1

ПОшел читать снова маны по марщрутизации что то мой мозг меня подкачал....

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