정적 IP를 avahi-resolved 동적 IP의 별칭으로 지정 - 정상적인 스캐너 용


1

죄송합니다. 이미 다른 방법으로 질문을 받았다면, 나는 알아낼 수 없었고, avahi를 올바르게 사용하는 방법을 알아 내려고 노력하면서 상당한 끔찍한 경험을했습니다.

나는 가지고있다 avahi 올바르게 작동하며 Wi-Fi를 감지 할 수 있습니다. Brother 스캐너. 나는 IP 주소를 알아낼 수있다.

avahi-browse -arp|grep -i brother

그래서 나는 제정신의 설정 파일을 수정할 수 있습니다 (기술적으로 형제 설정 파일입니다). /etc/opt/brother/scanner/brscan4//brsanenetdevice4.cfg 스캐너의 IP 주소를 추가하십시오.

그러나 네트워크가 다운되고 스캐너가 라우터에서 새 IP 주소를 받으면이 과정을 다시 거쳐야합니다. 그래서 나는 여기서 생각하고있다, "이게 아바의 모든 지점이 아닌가?" 아니 IP 주소를 입력해야합니까? "그래서 IP 주소 대신 파일에 avahi 호스트 이름을 추가합니다.

DEVICE=brother-scanner-avahi , "MFC-avahi" , Unknown , IP-ADDRESS=BRNXXXXXXX.local

대신에

DEVICE=brother-scanner-101 , "MFC-101" , Unknown , IP-ADDRESS=192.168.0.101 

그러나 이것은 효과가 없습니다. 잘, brsaneconfig4 -p 그렇지 않습니다. 요청을 전달하기 때문입니다. ping 어느 avahi 호스트 이름을 잘 처리 할 수 ​​있습니다. xsane (0.998) 방금 말합니다 :

'brother4 : net1; dev2'장치를 열지 못했습니다. 인수가 잘못되었습니다.

그래서, 내 생각은 어떻게 든 내부 고정 IP를 avahi ip로 "해결"하도록 설정하는 것입니다. 이것을 할 수있는 방법이 있습니까? 예를 들어, 내가 원한 경우 :

 127.0.0.2

장치의 (동적 인) 해결 된 avahi IP 주소 이름의 별명 일뿐입니다. 어떤 종류의 hosts 파일 않습니다. 나는 이것이 포함될 수 있다고 생각하고있다. bind 또는 squid 또는 경험이없는 것과 같은 다른 것, 그래서 나는 어디서부터 시작해야할지 모른다.

이것은 페도라 리눅스 머신입니다.


편집 : 나는이 방법을 달성하는 것이 가능한지 알고 싶은대로, 라우터에서 이것을하는 것을 피하고 싶습니다.


양식에서 호스트 이름 확인을 설정할 수 있습니다. printername.local avahi를 통해. 이리 . 나는 라우터를 (a) 잘 알려진 장치에 항상 동일한 IP 주소를주고 (b) DNS 해상도를 제공하도록 구성하기를 선호하기 때문에이 작업을 직접 수행하지 않았으므로 세부 사항을 제공하거나 디버깅 할 수는 없습니다. 특별한 문제.
dirkt

@dirkt 네,이 부분은 이미 작동합니다. 내가 원하는 것은 xsane에 avahi 이름 (scanner.local)을 허용하거나 변경하지 않는 정적 인 내부 IP에 해당 avahi 이름을 매핑하는 방법을 찾는 것입니다. 그래서 구성 파일에서 지정할 수 있습니다
insaner

따라서 (a) xsane이 resolver를 올바르게 사용하는지 확인하고 (코드 읽기 및 필요한 patchif 제출) 또는 (b) 스캐너가 항상 동일한 IP 주소 (라우터의 DHCP 서버 구성)를 얻는 지 확인하십시오. "avahi 이름을 정적 IP에 매핑"하는 방법도 효과가 있습니까?
dirkt

친구가 나에게 잠재적 인 해결책에 대한 링크를 보냈지 만 여기에 답글을 쓰고 싶지 않았습니다. 일단 내가 그것을 밖으로 시도하고 그것이 작동 여부를 볼 수있는 게시됩니다. 그 때까지는 게시 할 솔루션을 기다리고 있습니다.
insaner

답변:


1

brsanenetdevice4.cfg에서 IP 주소 대신 호스트 이름을 사용할 수 있지만 구성 변수의 이름은 NODENAME입니다.

예를 들어 위의 사례를 수정하면 다음과 같이 사용할 수 있습니다.

DEVICE=brother-scanner-avahi , "MFC-avahi" , Unknown , NODENAME=BRNXXXXXXX.local

인쇄 할 때처럼 avahi를 사용하여 해결됩니다.


0

좋아, 관련 질문에 다른 SU 응답을 지적한 친구의 힌트에 ( iptables를 사용하여 IP 주소 리디렉션 ), 그리고 약간의 실험과 시행 착오, 나는 그것을 이해했다. 그것이 도움이되는 경우를 대비하여 다음과 같습니다.

속임수는 사용하는 것입니다. iptables NAT . 먼저 별칭으로 사용할 IP (할당되지 않은 / 사용 가능한) IP를 선택합니다. 192.168.0.201과 같은 것 (라우터가 사용하지 않을 것이라는 것을 아는 것). 참고 : do 아니 작동하지 않으므로 127.0.0.x 범위를 사용하십시오!

그런 다음 sane 스캐너에 대한 정의. 제 경우에는 파일이 /etc/opt/brother/scanner/brscan4/brsanenetdevice4.cfg. 그래서이 줄을 추가했습니다.

DEVICE=brother-scanner-avahi-alias , "MFC-avahi-alias" , Unknown , IP-ADDRESS=192.168.0.201

그런 다음 다음을 포함하는 스크립트를 만들었습니다.

ALIAS_IP=192.168.0.201
BROTHER_UNIQ_STR=MFC-YOUR-MODEL-HERE
BROTHER_SCANNER_IP=`avahi-browse -rpt _ipp._tcp|grep $BROTHER_UNIQ_STR|awk 'BEGIN {FS=";"} /^=/ { print  $8}'`
# $7 is the .local hostname
# avahi-browse -rpt _ipp._tcp|grep $BROTHER_UNIQ_STR|awk 'BEGIN {FS=";"} /^=/ { print $7, $8}'


# to complete this: iptables-save >/somepath/iptables.save Add to cron upon start up iptables-restore </somepath/iptables.save

########  
echo Brother scanner IP: \'$BROTHER_SCANNER_IP\'
if [[ $BROTHER_SCANNER_IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
    # enable IP forwarding in kernel:
    sysctl net.ipv4.ip_forward=1
    # To make it permanent, edit /etc/sysctl.conf and ensure that the line "net.ipv4.ip_forward = 1" is there and not commented out.

    iptables -t nat -A OUTPUT -d $ALIAS_IP -j DNAT --to-destination $BROTHER_SCANNER_IP

    # Print the OUTPUT rules after our changes:
    # iptables -t nat -L
    iptables -t nat -L OUTPUT

    # If you really mess up, or want to get rid of all your rules (careful with this command!!)
    # TO DELETE ALL RULES ("F"lush) run: iptables -t nat -F OUTPUT
else
    echo 
    echo "ERROR: bad ip address"
    echo 
    exit 1
fi

해당 스크립트를 실행하십시오. sane 별칭 IP 주소를 통해 스캐너를 감지 할 수 있어야합니다. 그런 다음 cron 작업이나 부트 스크립트 (자동 시작 또는 시스템에서 사용하는 모든 작업)에 스크립트를 추가하면 매번 사용자에게 도움이됩니다.

스크립트는 수퍼 유저 (root) 또는 sudo로 실행해야합니다.

희망은 누군가를 도울 수 있기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.