@greefon

Особенности роутинга в CentOS или рассказ о кривых руках. Что я делаю не так?

Дано

Есть две сети: 192.168.3.0/24 и 192.168.10.0/24. Назовем их, для удобства, сеть А и сеть Б.

В сети А роль шлюза выполняет машинка на CentOS, имеющая два физических интерфейса: eth0 (Интернет, белый IP) и eth1 (3.1, LAN). Default gateway, что вполне очевидно, eth0.

В сети Б шлюзом является DLink 250.

Нужно объединить эти две сети с помощью OpenVPN. На данный момент сервером является DLink 250, в качестве локальной сети указана 10.0, в качестве удаленной 3.0. Клиентом выступает CentOS, соединение устанавливается штатно, появляется новый интерфейс tun0 (свой IP 128.10.0.6, IP другого конца 128.10.0.5). В таблице маршрутизации появляются три новых маршрута:
— маршрут к 128.10.0.5 через tun0,
— маршрут к сети 128.10.0.0 через 128.10.0.5 и tun0
— маршрут к сети 192.168.10.0 через 128.10.0.5 и tun0

Проблема

С интерфейса 128.10.0.6 сеть Б прекрасно пингуется. Но, если пытаться пинговать ее с интерфейса 3.1 или вообще из сети А — пакет дохнет где-то после PREROUTING. Он не появляется ни на одном из интерфейсов, кроме входящего, и не отлавливается ни в одном правиле, кроме PREROUTING. Такое ощущение, что ядро эти пакеты молча выбрасывает в мусор.

ЧЯДНТ?
  • Вопрос задан
  • 7700 просмотров
Решения вопроса 1
@greefon Автор вопроса
Причина обнаружена. Админ сервера пытался сначала сделать туннель IPSEC через racoon. Не получилось. Тогда он переключился на OpenVPN. При этом, не смотря на наличие отсутствия IPSEC тоннеля и убитый процесс енота SPD вполне себе оставались живы и ядро честно пыталось отправить пакет туда, откуда солнце не светит. После setkey -FP пакеты полетели туда, куда полагается, т.е. в tun0.

Всем ответившим огромная благодарность (и не только) за человеческое участие.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 10
@pcdesign
Наверное, стоит выложить результаты команд

ifconfig
ip r
iptables -nvL
iptables -t nat -nvL

Конфиги и логи опенвпн.
И вам помогут быстрее.

Ну а если лень, то попробуйте просто послушать что там происходит, например так:

ngrep -W byline -d tun0 host xxx.xxx.xxx.xx and port xxxx

P.S. И вы не забыли сделать так

echo "1" > /proc/sys/net/ipv4/ip_forward

Или более глобально в файле /etc/sysctl.conf в строке

net.ipv4.ip_forward = 1
Ответ написан
ivnik
@ivnik
Может добавить в таблицу маршрутизации маршрут к 192.168.3.0 через 128.10.0.5 и tun0?
Ответ написан
ivnik
@ivnik
Покажите тогда правила iptables
Ответ написан
@smartlight
стоит выбрать сеть класса С для openvpn ибо
whois 128.10.0.5
#
# Query terms are ambiguous.  The query is assumed to be:
#     "n 128.10.0.5"
#
# Use "?" to get help.
#

#
# The following results may also be obtained via:
# http://whois.arin.net/rest/nets;q=128.10.0.5?showDetails=true&showARIN=false&e                                                                                             xt=netref2
#

NetRange:       128.10.0.0 - 128.10.255.255
CIDR:           128.10.0.0/16
OriginAS:
NetName:        PURDUE-CS-EN
NetHandle:      NET-128-10-0-0-1
Parent:         NET-128-0-0-0-0
NetType:        Direct Assignment
RegDate:        1984-08-01
Updated:        2009-06-19
Ref:            http://whois.arin.net/rest/net/NET-128-10-0-0-1

OrgName:        Purdue University
OrgId:          PURDUE
Address:        Information Technology
Address:        155 S. Grant Street
City:           West Lafayette
StateProv:      IN
PostalCode:     47907-2114
Country:        US
RegDate:
Updated:        2010-09-20
Ref:            http://whois.arin.net/rest/org/PURDUE

OrgNOCHandle: PNOC-ARIN
OrgNOCName:   Purdue Network Operations Center
OrgNOCPhone:  +1-765-496-6200
OrgNOCEmail:  noc@purdue.edu
OrgNOCRef:    http://whois.arin.net/rest/poc/PNOC-ARIN

OrgAbuseHandle: PUISP-ARIN
OrgAbuseName:   Purdue University STEAM-CIRT
OrgAbusePhone:  +1-765-496-1666
OrgAbuseEmail:  abuse@purdue.edu
OrgAbuseRef:    http://whois.arin.net/rest/poc/PUISP-ARIN

OrgTechHandle: PURDU-ARIN
OrgTechName:   Purdue Hostmaster
OrgTechPhone:  +1-765-496-8320
OrgTechEmail:  hostmaster@purdue.edu
OrgTechRef:    http://whois.arin.net/rest/poc/PURDU-ARIN

RTechHandle: DT50-ARIN
RTechName:   Trinkle, Daniel
RTechPhone:  +1-765-494-7844
RTechEmail:  trinkle@purdue.edu
RTechRef:    http://whois.arin.net/rest/poc/DT50-ARIN

#
# ARIN WHOIS data and services are subject to the Terms of Use
# available at: https://www.arin.net/whois_tou.html
#

Ответ написан
@smartlight
В спеках к Д-линку не указано, что он умеет openvpn.
Ответ написан
@smartlight
плз вывод: ip ro на 3.1

маршрут на сеть В передаете средствами openvpn?

конфиги сервера и клиента openvpn не помешают
Ответ написан
@greefon Автор вопроса
вывод ip ro в комментах выше
маршрут (три маршрута, если быть точным) передается средствами openvpn

конфиг сервера показать не могу (там только веб-интерфейс), конфиг клиента:

client
nobind
remote ZZ.ZZ.ZZ.ZZ 1194
proto udp
resolv-retry infinite
dev tun
log /etc/openvpn/openvpn.log
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/1.crt
key /etc/openvpn/1.key
cipher AES-128-CBC
auth SHA1
verb 7
route-delay 6
Ответ написан
Комментировать
@alz
Не вижу этому предпосылок, но попробуйте
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter
Ответ написан
@smartlight
тогда сделайте наоборот.
центос сервером а длинк клиентом и посмотрите
Ответ написан
@smartlight
тогда берите еще комп, который сделайте клиентом и тестируйте там
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы