LINUX.ORG.RU
ФорумAdmin

OpenWRT print-server

 , , ,


0

1

Добрый день.

Помогите разобраться со следующей проблемой:

Есть старый ноутбук с WinXP и старый принтер LaserJet 1000 который замечательно работает локально через USB подключение. В силу особенностей, принтер на «борту» не имеет полноценной управляющей микропрограммы, она загружается драйвером при каждом включении принтера.

Появилось желание сделать его сетевым. Был приобретен роутер Dlink DIR620 rev.D c USB и прошит OpenWRT. За основу была взята статья с хабра https://habr.com/ru/post/267029/ Все действия оттуда выполнил, драйверы USB и принтера установил, демон запустил, прошивку для своего принтера скачал, файрвол настроил.

Что имеем по итогу:
- роутер видит принтер, при перезагрузке роутера принтер издает жужжащие звуки как при включении (т.е. вроде как программа на него заливается)
- ноут с ХР локально по USB печатает нормально, т.е. драйвер не при чем, с ним все ОК
- файрвол (вначале грешил на него) - показывает что порт открыт
- кабели USB и UTP - в порядке, т.к. локально принтер печатает и с роутером связь есть.

Но печать не идет. Подскажите, в какую сторону копать, никак не могу разобраться. Можно ли как-то понять, дошло задание на печать от WinXP до роутера, обработал ли он его и если да, отправил ли он его на принтер?

root@OpenWrt:~# uci show p910nd
p910nd.@p910nd[0]=p910nd
p910nd.@p910nd[0].device='/dev/usb/lp0'
p910nd.@p910nd[0].port='0'
p910nd.@p910nd[0].runas_root='0'
p910nd.@p910nd[0].mdns='0'
p910nd.@p910nd[0].mdns_ty='LaserJet1000'
p910nd.@p910nd[0].mdns_note='Basement'
p910nd.@p910nd[0].enabled='1'
p910nd.@p910nd[0].bind='192.168.1.1'
p910nd.@p910nd[0].bidirectional='1'

root@OpenWrt:~# netstat -tulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 1431/dnsmasq
tcp 0 0 192.168.1.1:53 0.0.0.0:* LISTEN 1431/dnsmasq
tcp 0 0 192.168.2.103:53 0.0.0.0:* LISTEN 1431/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 831/dropbear
tcp 0 0 192.168.1.1:9100 0.0.0.0:* LISTEN 1359/p9100d
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 985/uhttpd
tcp 0 0 ::1:53 :::* LISTEN 1431/dnsmasq
tcp 0 0 fe80::9294:e4ff:feee:ac8:53 :::* LISTEN 1431/dnsmasq
tcp 0 0 fda8:265e:f180::1:53 :::* LISTEN 1431/dnsmasq
tcp 0 0 fe80::9294:e4ff:feee:ac8:53 :::* LISTEN 1431/dnsmasq
tcp 0 0 fe80::9294:e4ff:feee:ac9:53 :::* LISTEN 1431/dnsmasq
tcp 0 0 :::22 :::* LISTEN 831/dropbear
tcp 0 0 :::80 :::* LISTEN 985/uhttpd
udp 0 0 127.0.0.1:53 0.0.0.0:* 1431/dnsmasq
udp 0 0 192.168.1.1:53 0.0.0.0:* 1431/dnsmasq
udp 0 0 192.168.2.103:53 0.0.0.0:* 1431/dnsmasq
udp 0 0 0.0.0.0:67 0.0.0.0:* 1431/dnsmasq
udp 0 0 :::546 :::* 1224/odhcp6c
udp 0 0 :::547 :::* 925/odhcpd
udp 0 0 ::1:53 :::* 1431/dnsmasq
udp 0 0 fe80::9294:e4ff:feee:ac8:53 :::* 1431/dnsmasq
udp 0 0 fda8:265e:f180::1:53 :::* 1431/dnsmasq
udp 0 0 fe80::9294:e4ff:feee:ac8:53 :::* 1431/dnsmasq
udp 0 0 fe80::9294:e4ff:feee:ac9:53 :::* 1431/dnsmasq

root@OpenWrt:~# uci show firewall
firewall.@defaults[0]=defaults
firewall.@defaults[0].syn_flood='1'
firewall.@defaults[0].input='ACCEPT'
firewall.@defaults[0].output='ACCEPT'
firewall.@defaults[0].forward='REJECT'
firewall.@zone[0]=zone
firewall.@zone[0].name='lan'
firewall.@zone[0].network='lan'
firewall.@zone[0].input='ACCEPT'
firewall.@zone[0].output='ACCEPT'
firewall.@zone[0].forward='ACCEPT'
firewall.@zone[1]=zone
firewall.@zone[1].name='wan'
firewall.@zone[1].network='wan' 'wan6'
firewall.@zone[1].input='REJECT'
firewall.@zone[1].output='ACCEPT'
firewall.@zone[1].forward='REJECT'
firewall.@zone[1].masq='1'
firewall.@zone[1].mtu_fix='1'
firewall.@forwarding[0]=forwarding
firewall.@forwarding[0].src='lan'
firewall.@forwarding[0].dest='wan'
firewall.@rule[0]=rule
firewall.@rule[0].name='Allow-DHCP-Renew'
firewall.@rule[0].src='wan'
firewall.@rule[0].proto='udp'
firewall.@rule[0].dest_port='68'
firewall.@rule[0].target='ACCEPT'
firewall.@rule[0].family='ipv4'
firewall.@rule[1]=rule
firewall.@rule[1].name='Allow-Ping'
firewall.@rule[1].src='wan'
firewall.@rule[1].proto='icmp'
firewall.@rule[1].icmp_type='echo-request'
firewall.@rule[1].family='ipv4'
firewall.@rule[1].target='ACCEPT'
firewall.@rule[2]=rule
firewall.@rule[2].name='Allow-IGMP'
firewall.@rule[2].src='wan'
firewall.@rule[2].proto='igmp'
firewall.@rule[2].family='ipv4'
firewall.@rule[2].target='ACCEPT'
firewall.@rule[3]=rule
firewall.@rule[3].name='Allow-DHCPv6'
firewall.@rule[3].src='wan'
firewall.@rule[3].proto='udp'
firewall.@rule[3].src_ip='fc00::/6'
firewall.@rule[3].dest_ip='fc00::/6'
firewall.@rule[3].dest_port='546'
firewall.@rule[3].family='ipv6'
firewall.@rule[3].target='ACCEPT'
firewall.@rule[4]=rule
firewall.@rule[4].name='Allow-MLD'
firewall.@rule[4].src='wan'
firewall.@rule[4].proto='icmp'
firewall.@rule[4].src_ip='fe80::/10'
firewall.@rule[4].icmp_type='130/0' '131/0' '132/0' '143/0'
firewall.@rule[4].family='ipv6'
firewall.@rule[4].target='ACCEPT'
firewall.@rule[5]=rule
firewall.@rule[5].name='Allow-ICMPv6-Input'
firewall.@rule[5].src='wan'
firewall.@rule[5].proto='icmp'
firewall.@rule[5].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type' 'router-solicitation' 'neighbour-solicitation' 'router-advertisement' 'neighbour-advertisement'
firewall.@rule[5].limit='1000/sec'
firewall.@rule[5].family='ipv6'
firewall.@rule[5].target='ACCEPT'
firewall.@rule[6]=rule
firewall.@rule[6].name='Allow-ICMPv6-Forward'
firewall.@rule[6].src='wan'
firewall.@rule[6].dest='*'
firewall.@rule[6].proto='icmp'
firewall.@rule[6].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type'
firewall.@rule[6].limit='1000/sec'
firewall.@rule[6].family='ipv6'
firewall.@rule[6].target='ACCEPT'
firewall.@rule[7]=rule
firewall.@rule[7].name='Allow-IPSec-ESP'
firewall.@rule[7].src='wan'
firewall.@rule[7].dest='lan'
firewall.@rule[7].proto='esp'
firewall.@rule[7].target='ACCEPT'
firewall.@rule[8]=rule
firewall.@rule[8].name='Allow-ISAKMP'
firewall.@rule[8].src='wan'
firewall.@rule[8].dest='lan'
firewall.@rule[8].dest_port='500'
firewall.@rule[8].proto='udp'
firewall.@rule[8].target='ACCEPT'
firewall.@include[0]=include
firewall.@include[0].path='/etc/firewall.user'
firewall.@rule[9]=rule
firewall.@rule[9].dest_port='9100'
firewall.@rule[9].name='Print-Server'
firewall.@rule[9].target='ACCEPT'
firewall.@rule[9].src='lan'


Я бы посоветовал вообще отключить фаервол (разрешить все всем) до тех пор, пока не заработает. Как заработает - настроить. Так ты один потенциальный затык исключить. И, да, с чего взял что драйвер нормальный? У хп и опенврт явно не один и тот же юзается

pihter ★★★★ ()

Если я ничего не путаю, не выйдет. По обозначенной тобою же причине: без драйвера оно не принтер, т.к. вся логика реализована в драйвере.

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

Для подобной рухляди тебе не принт-сервер нужен, а какой-нибудь usb over ethernet. И то не факт, что работать будет.

mogwai ★★★★ ()

Попробуй CUPS поставить на роутер вместо p910nd.

p910nd не складирует задания локально, он пересылает данные чуть ли не сразу на принтер. Если принтер чувствителен к задержкам, ты с p910nd можешь словить проблем на ровном месте. А вот CUPS сначала принимает задание целиком, а потом уже кормит принтер данными.

У CUPS два минуса: (1) нужно место, куда складывать задачи, то есть придётся воткнуть USB флешку, (2) в CUPS должны быть доступны драйверы для твоего принтера, потому что именно он готовит данные для принтера.

i-rinat ★★★★★ ()