Debian 11에서 "찾을 수 없음: /sbin/iptables"를 수정하는 방법

Debian 11에서 "찾을 수 없음: /sbin/iptables"를 수정하는 방법

연구용 프록시 서버에서 실험적인 작업을 하려고 합니다. 나는 이 주제에 대해 아무것도 모르지만 도움이 필요하다는 점을 즉시 경고해야 합니다. 나는 선생님의 지시에 따라 모든 일을 했습니다. 따라서 문제의 핵심은 다음과 같습니다.

iptables.sh file다음과 같은 것이 있습니다 .

    #!/bin/bash
    
    IPTABLES=' /sbin/iptables'
    EXTIF='enp0s3'
    INTIF1='enp0s8'
    /bin/echo 1 > /proc/sys/net/ipv4/ip_forward
    $IPTABLES -F
    $IPTABLES -t nat -F
    $IPTABLES -t mangle -F
    $IPTABLES -X
    $IPTABLES -t nat -X
    $IPTABLES -t mangle -X
    $IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE
    $IPTABLES -A FORWARD -i $INTIF1 -o $EXTIF -m state --state NEW,ESTABLISHED -j ACCEPT
    
    iptables -t nat -A PREROUTING -p tcp -m tcp -s 10.20.2.0/24 --dport 443 -j REDIRECT --to-ports 3129
    iptables -t nat -A PREROUTING -p tcp -m tcp -s 10.20.2.0/24 --dport 80 -j REDIRECT --to-ports 3128
    
    #iptables -t nat -A OUTPUT -o lo -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
    #iptables -t nat -A PREROUTING -i enp0s3 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
    #iptables -t nat -A OUTPUT -o lo -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128
    #iptables -t nat -A PREROUTING -i enp0s3 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128
    
    $IPTABLES -A INPUT --protocol tcp --dport 22 -j ACCEPT
    $IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
    $IPTABLES -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
    $IPTABLES -A INPUT -i $EXTIF -m state --state NEW,INVALID -j DROP
    #$IPTABLES -A FORWARD -i $EXTIF -m state --state NEW,INVALID -j DROP

가상 머신에서 root로 다음 명령을 실행하면 sh iptables.sh다음과 같은 결과가 나타납니다.

여기에 이미지 설명을 입력하세요.

찾을 수 없음: /sbin/iptables

원인은 무엇이며 해결 방법은 무엇입니까?

답변1

파일에 Windows 스타일 줄 종결자가 있는 것 같습니다.

테스트하려면 명령을 사용하십시오 file iptables.sh.

출력은 다음과 유사합니다.

iptables.sh: Bourne-Again shell script, ASCII text executable, with CRLF line terminators

있는 경우 with CRLF line terminatorsUnix 스타일 줄 종결자를 사용하도록 스크립트를 변환해야 합니다.

fromdos iptables.sh   # in package "tofrodos"

또는

dos2unix iptables.sh   # in package "dos2unix"

그 후에도 여전히 오류가 발생하면 3행에서 변수 할당을 확인하세요.

IPTABLES=' /sbin/iptables'

선행 공백 문자가 /sbinALT 공백이거나 기타 공백이 아닌 문자인 경우 일부 오류가 발생할 수 있습니다. 공간은 불필요하므로 제거하면 됩니다.

IPTABLES='/sbin/iptables'

관련 정보