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

Исходное сообщение
"Как организовать DNAT на несколько destination в Linux?"

Отправлено chiptch , 29-Июн-03 18:26 
Есть Linux с 2-мя сет. картами. Надо получать TCP пакеты на одном интерфейсе и форвардить на несколько серверов(один и тот же пакет) находящиеся на другом интерфейсе.

Я так понимаю что это делается с помощью DNAT. Но DNAT умеет форвардить пакет только на один destination. А как зделать чтобы форвардить один и тот же пакет на несколько destinations ?

Спасибо.


Содержание

Сообщения в этом обсуждении
"Как организовать DNAT на несколько destination в Linux?"
Отправлено poor bugger , 30-Июн-03 01:12 
а отвечать они на него как будут?
тоже вдвоем? или будут договариваться между собой?

"Как организовать DNAT на несколько destination в Linux?"
Отправлено chiptch , 30-Июн-03 10:30 
>а отвечать они на него как будут?
>тоже вдвоем? или будут договариваться между собой?

Они не будут отвечать. Главное это переправить.
На самом деле если можно получать(на одном интерфейсе) TCP и отправлять (на другом) direct broadcast это тоже бы решило мою задачу.

Я понимаю что это элементарно написать, но мне нужно использовать что-то готовое и не писать самому. Я вот и подумал что iptables должен это уметь.
Но никак не могу найти.

Спасибо



"Как организовать DNAT на несколько destination в Linux?"
Отправлено Zergling , 30-Июн-03 11:40 
>>а отвечать они на него как будут?
>>тоже вдвоем? или будут договариваться между собой?
>
>Они не будут отвечать. Главное это переправить.
>На самом деле если можно получать(на одном интерфейсе) TCP и отправлять (на
>другом) direct broadcast это тоже бы решило мою задачу.
>
>Я понимаю что это элементарно написать, но мне нужно использовать что-то готовое
>и не писать самому. Я вот и подумал что iptables должен
>это уметь.
>Но никак не могу найти.
>
>Спасибо


Хмммммм
по моему это не возможно :
вот если бы были UDP пакеты
то да


"Как организовать DNAT на несколько destination в Linux?"
Отправлено chiptch , 30-Июн-03 12:53 
>Хмммммм
>по моему это не возможно :
>вот если бы были UDP пакеты
>то да

Хорошо, допустим что это UDP пакеты.
Как это сделать ?

Я делал так:

iptables -t nat -A PREROUTING -p udp -d 10.10.251.95 --dport 230 -j DNAT --to-destination 192.168.1.255:2300
iptables -A FORWARD -i eth1 -d 192.168.1.255 -p udp --dport 2300 -j ACCEPT

где eth0=10.10.251.95/16
    eth1=192.168.1.1/24

И это не работает. Здесь что-то неправильно написано ?


"Как организовать DNAT на несколько destination в Linux?"
Отправлено poor bugger , 01-Июл-03 07:01 
netcat -l -u -p listen_port | tee "| netcat -u destination_host_1 destination_port" | netcat -u destination_host_2 destination_port

"Как организовать DNAT на несколько destination в Linux?"
Отправлено poor bugger , 01-Июл-03 07:32 
>netcat -l -u -p listen_port | tee "| netcat -u destination_host_1 destination_port" | netcat -u destination_host_2 destination_port

черт так не катит
вот так

mknod /tmp/netpipe "p"

netcat -l -u -p listen_port | tee /tmp/netpipe | netcat -u destination_host_2 destination_port &

netcat -u destination_host_1 destination_port < /tmp/netpipe


"Как организовать DNAT на несколько destination в Linux?"
Отправлено chiptch , 01-Июл-03 20:58 
>>netcat -l -u -p listen_port | tee "| netcat -u destination_host_1 destination_port" | netcat -u destination_host_2 destination_port
>
>черт так не катит
>вот так
>
>mknod /tmp/netpipe "p"
>
>netcat -l -u -p listen_port | tee /tmp/netpipe | netcat -u destination_host_2
>destination_port &
>
>netcat -u destination_host_1 destination_port < /tmp/netpipe


Про netcat я не знал. Попробую обязательно. Огромое спасибо.


"Как организовать DNAT на несколько destination в Linux?"
Отправлено chiptch , 01-Июл-03 21:21 
>>>netcat -l -u -p listen_port | tee "| netcat -u destination_host_1 destination_port" | netcat -u destination_host_2 destination_port
>>
>>черт так не катит
>>вот так
>>
>>mknod /tmp/netpipe "p"
>>
>>netcat -l -u -p listen_port | tee /tmp/netpipe | netcat -u destination_host_2
>>destination_port &
>>
>>netcat -u destination_host_1 destination_port < /tmp/netpipe
>
>
>Про netcat я не знал. Попробую обязательно. Огромое спасибо.

А можно объяснение PLZ.

Что делает первая строчка я понял. А зачем вторая ?
По первой строчке получается я слушаю UDP порт , всё что туда приходит кладу в pipe, netstat читает и посулает на destination_host_2:destination_port.

А вот зачем вторая ?

Кстати а можно слушать на TCP порту а посылать на  UDP ?

Ещё раз ОГРОМНОЕ спасибо.


"Как организовать DNAT на несколько destination в Linux?"
Отправлено Sergei , 01-Июл-03 01:07 
Понимаю, что, возможно бред, но:
если эти destination в одной сети (например 192.168.0.6 и 192.168.0.5 их сетка - 192.168.0.4 а бродкаст 192.168.0.7) так вот если слать на 192.168.0.7, то получат пакет оба сервера или же нет?

"Как организовать DNAT на несколько destination в Linux?"
Отправлено chiptch , 01-Июл-03 21:03 
>Понимаю, что, возможно бред, но:
>если эти destination в одной сети (например 192.168.0.6 и 192.168.0.5 их сетка
>- 192.168.0.4 а бродкаст 192.168.0.7) так вот если слать на 192.168.0.7,
>то получат пакет оба сервера или же нет?

Вот этот самый broadcast и не получается форвардить.
Вот с netcat подсказали - буду пробовать.