LINUX.ORG.RU
ФорумAdmin

проблема с openVPN, не видно сеть за серввером.


0

0

Всем доброго времени суток. Столкнулся со следующей проблемой. Подключение проходит успешно с клиента пингую адрес сервера (192.168.100.1) и наоборот, но не пингую сеть за сервером (192.168.116.0/24). Насколько я понимаю, косяк где-то в настройках маршрутизации и iptables, но не врубаюсь где именно. И все это происходит при следующих параметрах :

192.168.100.0/24 - VPN сеть 192.168.116.0/24 - сеть за сервером 192.168.116.32 - адрес сервера 1 192.168.100.1 - адрес сервера vpn xx.yy.zz.203 - внешний адрес сервера

Интерфейсы eth0 ip 192.168.116.32 mask 255.255.255.0 - -

eth1 IP xx.yy.zz.203 Маска 255.255.255.240 Шлюз xx.yy.zz.193

tun0

ip 192.168.100.1 mask 255.255.255.0

Команда route на сервере:

Таблица маршрутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.2   *               255.255.255.255 UH    0      0        0 tun0
xx.yy.zz.192    *               255.255.255.240 U     1      0        0 eth1
192.168.116.0   *               255.255.255.0   U     1      0        0 eth0
192.168.100.0   192.168.100.2   255.255.255.0   UG    0      0        0 tun0
link-local      *               255.255.0.0     U     1000   0        0 eth1
default         xx.yy.zz.193    0.0.0.0         UG    0      0        0 eth1

Команда route на подключенном клиенте:

Активные сетевые маршруты:
Сетевой адрес           Маска сети      Адрес шлюза        Интерфейс  Метрика 
          0.0.0.0          0.0.0.0      192.168.0.1   192.168.0.100	  20
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1	  1
      192.168.0.0    255.255.255.0    192.168.0.100   192.168.0.100	  20
    192.168.0.100  255.255.255.255        127.0.0.1       127.0.0.1	  20
    192.168.0.255  255.255.255.255    192.168.0.100   192.168.0.100	  20
    192.168.100.0    255.255.255.0    192.168.100.5   192.168.100.6	  1
    192.168.100.4  255.255.255.252    192.168.100.6   192.168.100.6	  30
    192.168.100.6  255.255.255.255        127.0.0.1       127.0.0.1	  30
  192.168.100.255  255.255.255.255    192.168.100.6   192.168.100.6	  30
        224.0.0.0        240.0.0.0    192.168.0.100   192.168.0.100	  20
        224.0.0.0        240.0.0.0    192.168.100.6   192.168.100.6	  30
  255.255.255.255  255.255.255.255    192.168.0.100   192.168.0.100	  1
  255.255.255.255  255.255.255.255    192.168.100.6           10005	  1
  255.255.255.255  255.255.255.255    192.168.100.6   192.168.100.6	  1
  255.255.255.255  255.255.255.255    192.168.100.6               3	  1
Основной шлюз:         192.168.0.1

конфиг сервера

port 1194
proto udp
dev tun
;dev-node tap0
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key # This file should be kept secret
dh /etc/openvpn/keys/dh1024.pem
server 192.168.100.0  255.255.255.0 # vpn subnet
ifconfig-pool-persist "/etc/openvpn/config/ipp.txt"
push "route 192.168.100.0 255.255.255.0"
push "route 192.168.116.0 255.255.255.0"
;duplicate-cn
keepalive 10 120
;cipher BF-CBC        # Blowfish (default)
;cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /etc/openvpn/log/openvpn-status.log
log /etc/openvpn/log/openvpn.log
log-append /etc/openvpn/log/openvpn.log
verb 3
mute 20
client-to-client
client-config-dir /etc/openvpn/ccd

В папке /etc/openvpn/ccd лежит файл client1 (имя сертификата под которым подключается клиент) с содержимым:
iroute 192.168.116.0 255.255.255.0

Конфиг клиента

client
dev tun
proto udp
remote xx.yy.zz.203 1194
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca geo\\ca.crt
cert geo\\client1.crt
key geo\\client1.key
comp-lzo
verb 3
mute 20

В iptables пробовал следующие варианты:

Вариант1

iptables -A INPUT -i tun+ -j ACCEPT
iptables -A FORWARD -i tun+ -j ACCEPT

Вариант2. Запускал такой скрипт.

# маски используемых сетей
IP_LAN="192.168.116.1/24" # моя домашняя сеть


# интерфейсы

IF_LAN="eth0" # сюда подключена локальная сеть
IF_INET="eth1" # сюда "подключен" интернет
IF_VPN="tun0" # это интерфейс нашего vpn

IPT="iptables"

# cleaning:
$IPT --flush
$IPT -t nat --flush
$IPT -t mangle --flush
$IPT -X

# тут по желанию и степени паранои
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT

# allow loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

###
# local host:

# allow outgoing connections:
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# разрешаем подключения к vpn
$IPT -A INPUT -p udp --dport 1194 -j ACCEPT

# разрешаем NAT из локальной сети и VPN:

$IPT -t nat -A POSTROUTING -o $IF_INET -j MASQUERADE


$IPT -A FORWARD -i $IF_LAN -o $IF_INET -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_INET -o $IF_LAN -m state --state ESTABLISHED,RELATED -j ACCEPT


$IPT -A FORWARD -i $IF_VPN -o $IF_INET -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_INET -o $IF_VPN -m state --state ESTABLISHED,RELATED -j ACCEPT

Вариант3.

iptables -A FORWARD -i eth1 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth1 -j ACCEPT
iptables -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT

iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p icmp -j ACCEPT

Еще я не очень понимаю как опередлит какой набор правил в iptables работает в данный момент. между каждым вариантами правил делал очистку iptables --flush iptables -t nat --flush iptables -t mangle --flush iptables -X

Форвардинг тоже включен. Т.е в /etc/sysctl.conf

net.ipv4.ip_forward = 1 net.ipv4.ip_dynaddr = 1

Еще в лога клиента проскакивает вот такая ошибка:

Mon Nov 23 23:48:40 2009 us=104299 PUSH: Received control message: 'PUSH_REPLY,route 192.168.100.0 255.255.255.0,route 192.168.100.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 192.168.100.6 192.168.100.5'
Mon Nov 23 23:48:40 2009 us=104355 Options error: Unrecognized option or missing parameter(s) in [PUSH-OPTIONS]:3: topology (2.0.9)

Подскажите, что я делаю не так. Спасибо )


Ответ на: комментарий от Kiteman

А как ему об этом сообщить ? Ведь записи в конфиге сервера

push "route 192.168.116.0 255.255.255.0"
И в /etc/openvpn/ccd/client1
iroute 192.168.116.0 255.255.255.0
Должно быть достаточно.

gufin
() автор топика
Ответ на: комментарий от Kiteman

>И в /etc/openvpn/ccd/client1
>iroute 192.168.116.0 255.255.255.0


в этом файле надо описывать сетку за клиентом,

и у тебя это не правильно, убери

Kiteman
()

В конфиг сервера
route 192.168.116.0 255.255.255.0

Вроде этого должно быть достаточно.

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

убрал. А как правильно ?

Добавил в конфиг сервера

route 192.168.116.0 255.255.255.0

С сервера перестал пинговать сеть 192.168.116.0, клиент при это цепляется, в логах все та же ошибка

Unrecognized option or missing parameter(s) in [PUSH-OPTIONS]:3: topology (2.0.9)

ну и клиент так же не видит сеть за сервером

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

>С сервера перестал пинговать сеть 192.168.116.0

потому что не надо делать то что порекомендовал уважаемый NNZ

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

Да, затупил.
push «route 192.168.116.0 255.255.255.0»
будет все-таки правильнее.

В остальном да, iroute тебе не нужен, если только ты не собираешься выпускать в VPN подсеть за клиентом.

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

Оставил только push «route 192.168.116.0 255.255.255.0» . Появилось новое. С клиента теперь могу пиногвать сервер не тольно по адресу 192.168.100.1, но и по адресу 192.168.116.32, остальная сеть 116 по прежнему не видна

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

Ну и route на клиенте изменился

Активные сетевые маршруты:
Сетевой адрес           Маска сети      Адрес шлюза        Интерфейс  Метрика 
          0.0.0.0          0.0.0.0      192.168.0.1   192.168.0.100	  20
        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1	  1
      169.254.0.0      255.255.0.0   169.254.146.14  169.254.146.14	  20
   169.254.146.14  255.255.255.255        127.0.0.1       127.0.0.1	  20
  169.254.255.255  255.255.255.255   169.254.146.14  169.254.146.14	  20
      192.168.0.0    255.255.255.0    192.168.0.100   192.168.0.100	  20
    192.168.0.100  255.255.255.255        127.0.0.1       127.0.0.1	  20
    192.168.0.255  255.255.255.255    192.168.0.100   192.168.0.100	  20
    192.168.100.0    255.255.255.0    192.168.100.5   192.168.100.6	  1
    192.168.100.4  255.255.255.252    192.168.100.6   192.168.100.6	  30
    192.168.100.6  255.255.255.255        127.0.0.1       127.0.0.1	  30
  192.168.100.255  255.255.255.255    192.168.100.6   192.168.100.6	  30
    192.168.116.0    255.255.255.0    192.168.100.5   192.168.100.6	  1
        224.0.0.0        240.0.0.0   169.254.146.14  169.254.146.14	  20
        224.0.0.0        240.0.0.0    192.168.0.100   192.168.0.100	  20
        224.0.0.0        240.0.0.0    192.168.100.6   192.168.100.6	  30
  255.255.255.255  255.255.255.255   169.254.146.14  169.254.146.14	  1
  255.255.255.255  255.255.255.255    192.168.0.100   192.168.0.100	  1
  255.255.255.255  255.255.255.255    192.168.100.6               3	  1
  255.255.255.255  255.255.255.255    192.168.100.6   192.168.100.6	  1
Основной шлюз:         192.168.0.1

И ошибка в логе клиента так же осталась

Tue Nov 24 19:47:42 2009 us=875044 PUSH: Received control message: 'PUSH_REPLY,route 192.168.116.0 255.255.255.0,route 192.168.100.0 255.255.255.0,topology net30,ping 10,ping-restart 120,ifconfig 192.168.100.6 192.168.100.5'
Tue Nov 24 19:47:42 2009 us=875132 Options error: Unrecognized option or missing parameter(s) in [PUSH-OPTIONS]:3: topology (2.0.9)

gufin
() автор топика
Ответ на: комментарий от nnz

Добавил. С клиента пинги в сеть не проходят. И вообще у меня очень плохо с iptables, я там много всякого напробовал и не уверен что те правила сейчас не работают. Для очистки правил делал :

iptables --flush
iptables -t nat --flush
iptables -t mangle --flush
iptables -X
Но не уверен что это правильно ) И после перезагрузки правила сохраняются ? )

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

>И после перезагрузки правила сохраняются ? )

Нет, но есть проги, которые могут вписать свои наборы правил (ufw, например).

Но не уверен что это правильно )


Не стоит забывать про
iptables -P FORWARD ACCEPT
и про
sysctl net.ipv4.ip_forward=1

Вообще в редхатовской семействе для сбора айпистолов в пропускающее состояние есть удобная команда service iptables stop. В дебиане и производных — нету.

Еще один вопрос: для компов за сервером он (сервер) является дефолтным шлюзом?

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

C iptables сделал следующее:

iptables --flush
iptables -t nat --flush
iptables -t mangle --flush
iptables -X
iptables -t filter --flush

sysctl net.ipv4.ip_forward=1
iptables -I FORWARD -i tun0 -j ACCEPT
iptables -I FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Пинги в сеть не проходят.

конфиг сервера:

port 1194
proto udp
dev tun
;dev-node tap0
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key # This file should be kept secret
dh /etc/openvpn/keys/dh1024.pem
server 192.168.100.0  255.255.255.0 # vpn subnet
ifconfig-pool-persist "/etc/openvpn/config/ipp.txt"
push "route 192.168.116.0 255.255.255.0"
;duplicate-cn
keepalive 10 120
;cipher BF-CBC        # Blowfish (default)
;cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status /etc/openvpn/log/openvpn-status.log
log /etc/openvpn/log/openvpn.log
log-append /etc/openvpn/log/openvpn.log
verb 3
mute 20
client-to-client

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

>Еще один вопрос: для компов за сервером он (сервер) является дефолтным шлюзом?

а это очень даже правильный вопрос.. =)

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

Нет, для компов за сервером шлюзом является 192.168.116.1

Не стоит забывать про
iptables -P FORWARD ACCEPT
и про
sysctl net.ipv4.ip_forward=1

это тоже прописывал.

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

ну дак и все тогда..

либо прописывай на компы за серваком маршруты до клиента впн

либо ставь сервак дефолтным шлюзом

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

Да, действительно заработало, прописал на 1 машину маршрут и пинги пошли. Спасибо )

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