06.08.2009

Размышления о сервере сканирования...

или маппинг портов средствами iptables:

Допустим, мы хотим стать сервером сканеров!
Пусть к компьютеру [A] посредством USB подключен сканер-1.
Пусть компьютер [B] подключается к сканеру МФУ по сети.

Во всех случаях у нас на компьютерах установлен GNU/Linux и сервисы сканирования обслуживают демоны saned

Выделяем демонов на сетевые сокеты посредством суперсерверов inetd или xinetd

Пусть у нас компьютер [A] имеет сетевой адрес 192.168.0.58, а компьютер [B] имеет сетевой адрес 192.168.0.59
Сервер сканирования у нас имеет адрес 192.168.0.1, внутренний сетевой интерфейс у него eth0

В обычном случае, если бы saned поддерживал подключения не просто по сетевым хостам но и по различным портам, то все было бы шикарно:

Скажем на первый сканер мы бы стучались, как 192.168.0.1:6789
192.168.0.(someone) -> 192.168.0.1:6789 -> 192.168.0.58:6566
А на второй на порт 6790
192.168.0.(someone) -> 192.168.0.1:6790 -> 192.168.0.59:6566

И выглядело бы это так:
# Первый сканер
iptables -t nat -A PREROUTING -s 192.168.0.0/255.255.255.0 -d 192.168.0.1 -i eth0 -p tcp -m tcp --dport 6789 -j DNAT --to-destination 192.168.0.58:6566
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -d 192.168.0.58 -o eth0 -p tcp -m tcp --dport 6566 -j SNAT --to-source 192.168.135.1

# Второй сканер
iptables -t nat -A PREROUTING -s 192.168.0.0/255.255.255.0 -d 192.168.0.1 -i eth0 -p tcp -m tcp --dport 6790 -j DNAT --to-destination 192.168.0.59:6566
iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.255.0 -d 192.168.0.59 -o eth0 -p tcp -m tcp --dport 6566 -j SNAT --to-source 192.168.135.1

Но жизнь слегка сложнее, чем просто пробросы портов.
Поэтому, для работы сервера сканеров, для каждого сканера создаем свой алиасный IP и далее делаем порт-форвард на него.

В клиентской части теперь пропишем в /etc/sane.d/net.conf
алиасные адреса хостов [A] и [B].

Почему просто не указать сразу IP адреса 192.168.0.58 и 192.168.0.59?
Предположим, что адрес одного из хостов [A] или [B] сменится, перепрописывать их на каждом отдельном клиенте?

То-то же!

1 коммент.:

Анонимный комментирует...

первый!
(лис)