LINUX.ORG.RU
ФорумAdmin

внешним ip во внутреннюю сеть


0

1

Такой вопрос.

Есть debian шлюз, он как и положено имеет несколько ip. Если я со шлюза подключаюсь к какому-либо хосту во внутренней сети, он почему-то использует свой внешний, а не внутренний ip.

01:00:08 user@super:~$ sudo ifconfig | grep «inet addr»
inet addr:94.xxx.xxx.xxx Bcast:94.xxx.xxx.xxx Mask:255.255.255.252
inet addr:192.168.26.1 Bcast:192.168.26.255 Mask:255.255.255.0
inet addr:127.0.0.1 Mask:255.0.0.0
01:00:37 user@super:~$ host mail.super
mail.super has address 192.168.26.107
01:00:56 user@super:~$ ssh mail.super
(...)
01:01:11 user@mail:~$ who
user pts/0 2010-07-22 01:01 (94.xxx.xxx.xxx)

Хост mail - это openvz контейнер, с обычными локальными хостами нет возможности проверить.

маршруты:

sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.26.106 0.0.0.0 255.255.255.255 UH 0 0 0 venet0
192.168.26.107 0.0.0.0 255.255.255.255 UH 0 0 0 venet0
192.168.26.101 0.0.0.0 255.255.255.255 UH 0 0 0 venet0
94.xxx.xxx.xxy 0.0.0.0 255.255.255.252 U 0 0 0 eth0
192.168.26.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 94.xxx.xxx.xxx 0.0.0.0 UG 0 0 0 eth0

Так вот. Где я накосячил в настройке?



Последнее исправление: phoenix_mstu (всего исправлений: 2)
Ответ на: комментарий от anonymous

пакет идет с адреса 192.168.26.1 но проходя через сам себя роутер натит его зачем-то , и меняет ему адрес источника на внешний. Как будто пакет в интернет пошел гулять

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

# iptables-save | grep SNAT
-A POSTROUTING -o eth0 -j SNAT --to-source 94.xxx.xxx.xxx

@mail:~$ ping super
PING super (192.168.26.1) 56(84) bytes of data.
64 bytes from 192.168.26.1: icmp_seq=1 ttl=64 time=0.020 ms
64 bytes from 192.168.26.1: icmp_seq=2 ttl=64 time=0.025 ms

хех) весь iptables-save не покажу. много надо будет заиксовывать. я и сейчас то чуть не раскололся :)

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

сделал так:

# iptables-save | grep SNA
-A POSTROUTING -d aaa.aaa.aaa.aaa/32 -o eth0 -j SNAT --to-source 94.xxx.xxx.xxx

aaa.aaa.aaa.aaa - это откуда я сейчас подключён. убирать боязно)

всё равно так же...

если указать с какого интерфейса подключаться - то всё ок

@super:~$ ping -I 192.168.26.1 mail
PING mail.super (192.168.26.107) from 192.168.26.1 : 56(84) bytes of data.
64 bytes from 192.168.26.107: icmp_seq=1 ttl=64 time=0.026 ms

root@mail:~# tcpdump -t icmp
tcpdump: WARNING: arptype 65535 not supported by libpcap - falling back to cooked socket
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on venet0, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
IP 94.XXX.XXX.XXX > mail.tratata.ru: ICMP echo request, id 16693, seq 1, length 64
IP mail.tratata.ru > 94.XXX.XXX.XXX: ICMP echo reply, id 16693, seq 1, length 64
IP 94.XXX.XXX.XXX > mail.tratata.ru: ICMP echo request, id 16693, seq 2, length 64
IP mail.tratata.ru > 94.XXX.XXX.XXX: ICMP echo reply, id 16693, seq 2, length 64
IP 192.168.26.1 > mail.tratata.ru: ICMP echo request, id 32821, seq 1, length 64
IP mail.tratata.ru > 192.168.26.1: ICMP echo reply, id 32821, seq 1, length 64
IP 192.168.26.1 > mail.tratata.ru: ICMP echo request, id 32821, seq 2, length 64
IP mail.tratata.ru > 192.168.26.1: ICMP echo reply, id 32821, seq 2, length 64

Тут сначала просто пинг, потом с -I

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

Есть идеи как его заставить устанавливать соединения через правильный интерфейс? Или спят уже все просто...

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

попробуй убери все записи для 192.16.26.* из таблицы роутинга и пропишу руками туда маршрут через venet0 (route add -net 192.168.*... 192.168.26.1 dev venet0)

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

> как его заставить устанавливать соединения через правильный интерфейс?

ровно этим занимается таблица роутинга. У тебя

sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.26.106 0.0.0.0 255.255.255.255 UH 0 0 0 venet0
192.168.26.107 0.0.0.0 255.255.255.255 UH 0 0 0 venet0
192.168.26.101 0.0.0.0 255.255.255.255 UH 0 0 0 venet0
94.xxx.xxx.xxy 0.0.0.0 255.255.255.252 U 0 0 0 eth0
192.168.26.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 94.xxx.xxx.xxx 0.0.0.0 UG 0 0 0 eth0

честно говоря какая-то каша. В частности вот эта

192.168.26.107 0.0.0.0 255.255.255.255 UH 0 0 0 venet0

строчка зачем? Какой адрес висит на venet0? Если хочешь чтобы до 192.168.26.107 пакеты ходили через 192.168.26.1 — так и скажи

route add -host 192.168.26.107 gw 192.168.26.1
pupok ★★
()
Ответ на: комментарий от pupok

imho каша возникла из назначения IP адресов на VZ. Локальная сеть 192.168.26.0/24 и виртуальные машины в том-же диапазоне. Нехорошо это. Соответсвенно прутся косяки в iptables и маршрутах. Чтобы поправить и всё было ок, достаточно виртуалки вынести в отдельную подсеть.

MKuznetsov ★★★★★
()

Если не считать SNAT'а, то выбор исходящего адреса производится по таблице main.

Интересует вывод ip ro, iptables -t nat -vnL POSTROUTING и brctl show.

nnz ★★★★
()

дай вывод
ip ro get 192.168.26.107
ip ru ls
iptables -t nat -n -L | grep 94.xxx.xxx.xxx

slavad
()

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

route del -host 192.168.26.106 venet0
route del -host 192.168.26.107 venet0
route del -host 192.168.26.101 venet0
ip r add 192.168.26.106/32 dev venet0 src 192.168.26.1
ip r add 192.168.26.107/32 dev venet0 src 192.168.26.1
ip r add 192.168.26.101/32 dev venet0 src 192.168.26.1

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

Сделал

route del -host 192.168.26.107 venet0
ip r add 192.168.26.107/32 dev venet0 src 192.168.26.1

теперь:

@super:~# ip ro
192.168.26.106 dev venet0 scope link
192.168.26.107 dev venet0 scope link src 192.168.26.1
192.168.26.101 dev venet0 scope link
94.xxx.xxx.xxx/30 dev eth0 proto kernel scope link src 94.xxx.xxx.xxx
192.168.26.0/24 dev eth1 proto kernel scope link src 192.168.26.1
default via 94.xxx.xxx.xxx dev eth0

теперь заходит со 192.168.26.1
это чудо) спасибо большое.

теперь ещё вопрос. очевидно у openvz есть скрипты, которыми он поднимает контейнеры и устанавливает параметры. в том числе маршруты. надо прописать туда чтоб маршрут добавлялся вышеприведённым способом. где это сделать?

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

А зачем добавлять? Вот этого:
route del -host 192.168.26.106 venet0
route del -host 192.168.26.107 venet0
route del -host 192.168.26.101 venet0
вполне достаточно, а это:
ip r add 192.168.26.106/32 dev venet0 src 192.168.26.1
ip r add 192.168.26.107/32 dev venet0 src 192.168.26.1
ip r add 192.168.26.101/32 dev venet0 src 192.168.26.1
лишнее.
И должно выглядеть примерно так:
sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
94.xxx.xxx.xxy 0.0.0.0 255.255.255.252 U 0 0 0 eth0
192.168.26.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 94.xxx.xxx.xxx 0.0.0.0 UG 0 0 0 eth0

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

Хотя конечно по хорошему, при eth1 в 192.168.26.0/24, venet0 должен пренадлежать скажем 192.168.27.0/24, или делать бридж из eth1 и venet0, и назначить br0 из диаппазона 192.168.26.0/24

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