URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 96100
[ Назад ]

Исходное сообщение
"соединить две сети через vtun"

Отправлено vanyadog , 22-Апр-15 22:31 
Добрый день.
нужно соединить две сети через vpn

есть 2 шлюза на linux (slackware), оба имеют внешние ip

на первом сервере настроил vtun в качестве сервера, на втором в качестве клиента

туннель поднялся, и с обоих шлюзов любой узел пингуется
но узлы из первой сети (172.16.0.0/16) не видят узлы из второй (172.16.55.0/24), и наоборот

схема такая

172.16.55.0/24 ---10.0.1.2--------10.0.1.1---172.16.0.0/16

маршруты с 1 сервера
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         ********        0.0.0.0         UG    1      0        0 eth0
10.0.1.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
********        0.0.0.0         255.255.255.0   U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
172.16.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth1
172.16.55.0     10.0.1.2        255.255.255.0   UG    0      0        0 tun0


маршруты со второго
0.0.0.0         ********        0.0.0.0         UG    1      0        0 eth1
10.0.1.1        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
172.16.0.0      10.0.1.1        255.255.0.0     UG    0      0        0 tun0
172.16.55.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2
********        0.0.0.0         255.255.255.252 U     0      0        0 eth1


конфиг vtun (сервер)
options {
  port 5001;                  # Listen on this port.

  # Syslog facility
  syslog        daemon;

  # Path to various programs
  ifconfig      /sbin/ifconfig;
  route         /sbin/route;
}

# Default session options
default {
  compress no;          # Compression is off by default
  speed 0;              # By default maximum speed, NO shaping
}

# TUN example. Session 'cobra'.
cobra {
  passwd ******;        # Password
  type tun;             # IP tunnel
  proto tcp;            # UDP protocol
  compress no;          # LZO compression level 9
  encrypt  yes;         # Encryption
  keepalive yes;        # Keep connection alive

  up {   # Connection is Up
         ifconfig "%% 10.0.1.1 pointopoint 10.0.1.2 mtu 1450";
         route "add -net 172.16.55.0 netmask 255.255.255.0 gw 10.0.1.2";
  };

  down {         # Connection is Down       # Bring routing down
         route "del -net 172.16.55.0 netmask 255.255.255.0 gw 10.0.1.2";
    };
}


конфиг vtun (клиент)

options {
  port 5001;            # Connect to this port.
  timeout 60;           # General timeout

  # Path to various programs
  ifconfig      /sbin/ifconfig;
  route         /sbin/route;
  ip            /usr/sbin/ip;
    }

# TUN example. Session 'cobra'.
cobra {
  passwd  ******;       # Password
  device tun0;          # Device tun1
  persist yes;          # Persist mode

  up {
        # Connection is Up

        # Assign IP addresses.
        ifconfig "%% 10.0.1.2 pointopoint 10.0.1.1 mtu 1450";
        route "add -net 172.16.0.0/16 gw 10.0.1.1";
  };

  down {
        # Connection is Down

        # Bring routing down
        route "del -net 172.16.0.0 netmask 255.255.0.0 gw 10.0.1.1";
    };
}

firewall открыл полностью (на обоих серверах)

если на компе из первой сети прописать
route add 172.16.55.0 mask 255.255.255.0 10.0.1.1,
то пинг с этого компа в удаленную сеть проходит, но это не дело.

Можно ли сделать так чтобы не нужно было ничего настраивать на компах пользователей. (т.е. всю настройку сделать на серверах)


Содержание

Сообщения в этом обсуждении
"соединить две сети через vtun"
Отправлено pavel_simple , 22-Апр-15 22:36 
> Добрый день.
> нужно соединить две сети через vpn
> есть 2 шлюза на linux (slackware), оба имеют внешние ip
> на первом сервере настроил vtun в качестве сервера, на втором в качестве
> клиента
> туннель поднялся, и с обоих шлюзов любой узел пингуется
> но узлы из первой сети (172.16.0.0/16) не видят узлы из второй (172.16.55.0/24),
> и наоборот
> схема такая
> 172.16.55.0/24 ---10.0.1.2--------10.0.1.1---172.16.0.0/16

#ip ro
#iptables-save
на обеих машинах пожалуйста

>[оверквотинг удален]
> netmask 255.255.0.0 gw 10.0.1.1";
>     };
> }
> firewall открыл полностью (на обоих серверах)
> если на компе из первой сети прописать
> route add 172.16.55.0 mask 255.255.255.0 10.0.1.1,
> то пинг с этого компа в удаленную сеть проходит, но это не
> дело.
> Можно ли сделать так чтобы не нужно было ничего настраивать на компах
> пользователей. (т.е. всю настройку сделать на серверах)

почему именно vtun? greeth/ipip/gre/l2tp/l2tpv3/многоихвядре было недостаточно?


"соединить две сети через vtun"
Отправлено vanyadog , 22-Апр-15 23:22 
> #ip ro

1 сервер (провайдер пробрасывает все порты с внешнего ip на этот 10.2.1.71)

default via 10.2.1.1 dev eth0  metric 1
10.0.1.2 dev tun0  proto kernel  scope link  src 10.0.1.1
10.2.1.0/24 dev eth0  proto kernel  scope link  src 10.2.1.71
127.0.0.0/8 dev lo  scope link
172.16.0.0/16 dev eth1  proto kernel  scope link  src 172.16.0.1
172.16.55.0/24 via 10.0.1.2 dev tun0

2 сервер
default via *.*.*.25 dev eth1  metric 1
10.0.1.1 dev tun0  proto kernel  scope link  src 10.0.1.2
127.0.0.0/8 dev lo  scope link
172.16.0.0/16 via 10.0.1.1 dev tun0
172.16.55.0/24 dev eth2  proto kernel  scope link  src 172.16.55.1
*.*.*.24/30 dev eth1  proto kernel  scope link  src *.*.*.26


> #iptables-save

1 сервер
# Generated by iptables-save v1.4.14 on Thu Apr 23 00:09:08 2015
*nat
:PREROUTING ACCEPT [384494:25178967]
:INPUT ACCEPT [138287:8073103]
:OUTPUT ACCEPT [5930:438597]
:POSTROUTING ACCEPT [13569:833561]
-A POSTROUTING -s 172.16.0.0/16 -o eth0 -j SNAT --to-source 10.2.1.71
COMMIT
# Completed on Thu Apr 23 00:09:08 2015
# Generated by iptables-save v1.4.14 on Thu Apr 23 00:09:08 2015
*filter
:INPUT ACCEPT [218053:13434621]
:FORWARD ACCEPT [7887:409732]
:OUTPUT ACCEPT [72487:3171089]
-A INPUT -i lo -j ACCEPT
-A INPUT -d 10.2.1.71/32 -i eth0 -p udp -m udp --sport 53 -j ACCEPT
-A INPUT -s 172.16.0.0/16 -d 172.16.0.1/32 -i eth1 -j ACCEPT
-A INPUT -i tun+ -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 1723 -j ACCEPT
-A INPUT -i eth0 -p gre -j ACCEPT
-A INPUT -s 10.0.0.0/24 -i ppp+ -p icmp -j ACCEPT
-A FORWARD -s 172.16.0.0/16 -i eth1 -o eth0 -j ACCEPT
-A FORWARD -d 172.16.0.0/16 -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 172.16.0.5/32 -p tcp -m tcp --sport 3389 -j ACCEPT
-A FORWARD -d 172.16.0.5/32 -p tcp -m tcp --dport 3389 -j ACCEPT
-A FORWARD -i 10.2.1.71 -o eth1 -p tcp -m tcp --dport 9000:9049 -j ACCEPT
-A FORWARD -s 10.0.0.0/24 -d 172.16.0.0/16 -i ppp+ -o eth1 -j ACCEPT
-A FORWARD -s 172.16.0.0/16 -d 10.0.0.0/24 -i eth1 -o ppp+ -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -s 10.2.1.71/32 -d *.*.*.25/32 -o eth0 -p tcp -m tcp --sport 5001 -j ACCEPT
-A OUTPUT -s 10.2.1.71/32 -o eth0 -p udp -m udp --dport 53 -j ACCEPT
-A OUTPUT -s 172.16.0.1/32 -d 172.16.0.0/16 -o eth1 -j ACCEPT
-A OUTPUT -o tun+ -j ACCEPT
-A OUTPUT -o eth0 -p tcp -m tcp --sport 1723 -j ACCEPT
-A OUTPUT -o eth0 -p gre -j ACCEPT
-A OUTPUT -d 10.0.0.0/24 -o ppp+ -p icmp -j ACCEPT
COMMIT
# Completed on Thu Apr 23 00:09:08 2015

2 сервер
# Generated by iptables-save v1.4.20 on Thu Apr 23 00:04:20 2015
*mangle
:PREROUTING ACCEPT [1821029:1044466359]
:INPUT ACCEPT [287804:16296429]
:FORWARD ACCEPT [1532386:1028126998]
:OUTPUT ACCEPT [285530:16527322]
:POSTROUTING ACCEPT [1817916:1044654320]
COMMIT
# Completed on Thu Apr 23 00:04:20 2015
# Generated by iptables-save v1.4.20 on Thu Apr 23 00:04:20 2015
*nat
:PREROUTING ACCEPT [315054:18774547]
:INPUT ACCEPT [251536:13971113]
:OUTPUT ACCEPT [218:31703]
:POSTROUTING ACCEPT [221:31955]
-A POSTROUTING -s 172.16.55.0/24 -o eth1 -j SNAT --to-source *.*.*.26
COMMIT
# Completed on Thu Apr 23 00:04:20 2015
# Generated by iptables-save v1.4.20 on Thu Apr 23 00:04:20 2015
*filter
:INPUT ACCEPT [276473:15537761]
:FORWARD ACCEPT [155:7080]
:OUTPUT ACCEPT [204329:8361533]
-A INPUT -i eth2 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth2 -p tcp -m tcp --sport 22 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -i lo -j ACCEPT
-A INPUT -i eth1 -p icmp -m limit --limit 4/sec -j ACCEPT
-A INPUT -s 172.16.55.0/24 -d 172.16.55.1/32 -i eth2 -j ACCEPT
-A INPUT -s внешний_ip_1_сервера/32 -j ACCEPT
-A FORWARD -d 172.16.55.0/24 -i eth1 -o eth2 -j ACCEPT
-A FORWARD -s 172.16.55.0/24 -i eth2 -o eth1 -j ACCEPT
-A FORWARD -s внешний_ip_1_сервера/32 -j ACCEPT
-A FORWARD -d внешний_ip_1_сервера/32 -j ACCEPT
-A OUTPUT -o eth2 -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -o eth2 -p tcp -m tcp --dport 22 -j ACCEPT
-A OUTPUT -d 127.0.0.0/8 -o lo -j ACCEPT
-A OUTPUT -o eth1 -p icmp -j ACCEPT
-A OUTPUT -s 172.16.55.1/32 -d 172.16.55.0/24 -o eth2 -j ACCEPT
-A OUTPUT -d внешний_ip_1_сервера/32 -j ACCEPT
COMMIT
# Completed on Thu Apr 23 00:04:20 2015


> почему именно vtun? greeth/ipip/gre/l2tp/l2tpv3/многоихвядре было недостаточно?

как-то давно, для тестов, настраивал vtun для точно таких же целей, все работало
никак не думал что могут возникнуть подобные проблемы


"соединить две сети через vtun"
Отправлено pavel_simple , 23-Апр-15 00:22 
>[оверквотинг удален]
> -A INPUT -i eth2 -p tcp -m tcp --dport 22 -j ACCEPT
> -A INPUT -i eth2 -p tcp -m tcp --sport 22 -j ACCEPT
> -A INPUT -s 127.0.0.0/8 -i lo -j ACCEPT
> -A INPUT -i eth1 -p icmp -m limit --limit 4/sec -j ACCEPT
> -A INPUT -s 172.16.55.0/24 -d 172.16.55.1/32 -i eth2 -j ACCEPT
> -A INPUT -s внешний_ip_1_сервера/32 -j ACCEPT
> -A FORWARD -d 172.16.55.0/24 -i eth1 -o eth2 -j ACCEPT
> -A FORWARD -s 172.16.55.0/24 -i eth2 -o eth1 -j ACCEPT
> -A FORWARD -s внешний_ip_1_сервера/32 -j ACCEPT
> -A FORWARD -d внешний_ip_1_сервера/32 -j ACCEPT

а где правила от 172.16.55.0/24 в tun+ ??? -- поди из-за этого и не ходит -- хотя с другой стороны default политики делают ACCEPT всему остальному и смысла обоим файрволам нет накакого, ну разве-что SNAT отрабатывает
>[оверквотинг удален]
> -A OUTPUT -d 127.0.0.0/8 -o lo -j ACCEPT
> -A OUTPUT -o eth1 -p icmp -j ACCEPT
> -A OUTPUT -s 172.16.55.1/32 -d 172.16.55.0/24 -o eth2 -j ACCEPT
> -A OUTPUT -d внешний_ip_1_сервера/32 -j ACCEPT
> COMMIT
> # Completed on Thu Apr 23 00:04:20 2015
>> почему именно vtun? greeth/ipip/gre/l2tp/l2tpv3/многоихвядре было недостаточно?
> как-то давно, для тестов, настраивал vtun для точно таких же целей, все
> работало
> никак не думал что могут возникнуть подобные проблемы

чтобы решить проблемы в целом нужно всего два инструмента
1. ping с ЛВС на хост в удалённой ЛВС
2. tcpdump последовательно на всех интерфейсах по пути

попутно нужно убедится что пакеты которые дожны попадать в тунель не попадают под SNAT


"соединить две сети через vtun"
Отправлено reader , 23-Апр-15 00:11 
> если на компе из первой сети прописать
> route add 172.16.55.0 mask 255.255.255.0 10.0.1.1,
> то пинг с этого компа в удаленную сеть проходит, но это не
> дело.
> Можно ли сделать так чтобы не нужно было ничего настраивать на компах
> пользователей. (т.е. всю настройку сделать на серверах)

не использовать /16 или вместо 172.16.55.0/24 использовать то что не входит в 172.16.0.0/16


"соединить две сети через vtun"
Отправлено pavel_simple , 23-Апр-15 00:24 
>> если на компе из первой сети прописать
>> route add 172.16.55.0 mask 255.255.255.0 10.0.1.1,
>> то пинг с этого компа в удаленную сеть проходит, но это не
>> дело.
>> Можно ли сделать так чтобы не нужно было ничего настраивать на компах
>> пользователей. (т.е. всю настройку сделать на серверах)
> не использовать /16 или вместо 172.16.55.0/24 использовать то что не входит в
> 172.16.0.0/16

кто сказал? понятие о меньшем префиксе сети знакомо? выбор маршрута при статической равнозначной маршрутизации по каким критериям выполняется?


"соединить две сети через vtun"
Отправлено pavel_simple , 23-Апр-15 00:31 
> если на компе из первой сети прописать
> route add 172.16.55.0 mask 255.255.255.0 10.0.1.1,
> то пинг с этого компа в удаленную сеть проходит, но это не
> дело.
> Можно ли сделать так чтобы не нужно было ничего настраивать на компах
> пользователей. (т.е. всю настройку сделать на серверах)

аааа, вкурил, дело в том, что на хостах первой ЛВС машины имеют маску /16 и соответственно считают сеть 55.0/24 direct connect, и поэтому не отсылают пакеты на шлюз по умолчанию.

дык это, или прописать маршрут (можно по dhcp отдать) или уменьшить маску broadcast сегмента


"соединить две сети через vtun"
Отправлено vanyadog , 23-Апр-15 21:34 
Поменял сетку на одном из шлюзов и все заработало.
Большое спасибо за помощь.