Есть Linux с 2-мя сет. картами. Надо получать TCP пакеты на одном интерфейсе и форвардить на несколько серверов(один и тот же пакет) находящиеся на другом интерфейсе.Я так понимаю что это делается с помощью DNAT. Но DNAT умеет форвардить пакет только на один destination. А как зделать чтобы форвардить один и тот же пакет на несколько destinations ?
Спасибо.
а отвечать они на него как будут?
тоже вдвоем? или будут договариваться между собой?
>а отвечать они на него как будут?
>тоже вдвоем? или будут договариваться между собой?Они не будут отвечать. Главное это переправить.
На самом деле если можно получать(на одном интерфейсе) TCP и отправлять (на другом) direct broadcast это тоже бы решило мою задачу.Я понимаю что это элементарно написать, но мне нужно использовать что-то готовое и не писать самому. Я вот и подумал что iptables должен это уметь.
Но никак не могу найти.Спасибо
>>а отвечать они на него как будут?
>>тоже вдвоем? или будут договариваться между собой?
>
>Они не будут отвечать. Главное это переправить.
>На самом деле если можно получать(на одном интерфейсе) TCP и отправлять (на
>другом) direct broadcast это тоже бы решило мою задачу.
>
>Я понимаю что это элементарно написать, но мне нужно использовать что-то готовое
>и не писать самому. Я вот и подумал что iptables должен
>это уметь.
>Но никак не могу найти.
>
>Спасибо
Хмммммм
по моему это не возможно :
вот если бы были UDP пакеты
то да
>Хмммммм
>по моему это не возможно :
>вот если бы были 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И это не работает. Здесь что-то неправильно написано ?
netcat -l -u -p listen_port | tee "| netcat -u destination_host_1 destination_port" | netcat -u destination_host_2 destination_port
>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 -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 я не знал. Попробую обязательно. Огромое спасибо.
>>>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 ?
Ещё раз ОГРОМНОЕ спасибо.
Понимаю, что, возможно бред, но:
если эти destination в одной сети (например 192.168.0.6 и 192.168.0.5 их сетка - 192.168.0.4 а бродкаст 192.168.0.7) так вот если слать на 192.168.0.7, то получат пакет оба сервера или же нет?
>Понимаю, что, возможно бред, но:
>если эти destination в одной сети (например 192.168.0.6 и 192.168.0.5 их сетка
>- 192.168.0.4 а бродкаст 192.168.0.7) так вот если слать на 192.168.0.7,
>то получат пакет оба сервера или же нет?Вот этот самый broadcast и не получается форвардить.
Вот с netcat подсказали - буду пробовать.