이 스크립트 파일을 한 번만 실행해야 합니까?

이 스크립트 파일을 한 번만 실행해야 합니까?

이 스크립트 파일을 한 번만 실행해야 합니까? 그러면 docker torproxy 컨테이너가 예상대로 작동하게 됩니까? 아니면 컴퓨터를 다시 시작할 때마다 이를 실행해야 합니까?

#!/usr/bin/env bash
#===============================================================================
#          FILE: tor-route-all-traffic.sh
#
#         USAGE: ./tor-route-all-traffic.sh
#
#   DESCRIPTION: Route all traffic through a docker tor container
#
#       OPTIONS: ---
#  REQUIREMENTS: running tor docker container
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: David Personette ([email protected]),
#  ORGANIZATION:
#       CREATED: 2015-07-06 05:59
#      REVISION: 0.1
#===============================================================================

set -euo pipefail # Treat unset variables as an error

# Most of this is from
# https://trac.torproject.org/projects/tor/wiki/doc/TransparentProxy

### set variables
# destinations you don't want routed through Tor
_non_tor="192.168.1.0/24 192.168.0.0/24"

### get the container tor runs in
_tor_container=$(docker ps | awk '/torproxy/')
    if [[ "$_tor_container" == "" ]]; then
    echo 'ERROR: you must start a tor proxy container first, IE:'
    echo '    docker run -d --net host --restart always dperson/torproxy'
    exit 1
fi

### get the UID that tor runs as
_tor_uid=$(docker exec $_tor_container id -u tor)

### Tor's TransPort
_trans_port="9040"
_dns_port="5353"

### flush iptables
iptables -F
iptables -t nat -F

### set iptables *nat to ignore tor user
iptables -t nat -A OUTPUT -m owner --uid-owner $_tor_uid -j RETURN

### redirect all DNS output to tor's DNSPort
iptables -t nat -A OUTPUT -p udp --dport 53 -j REDIRECT --to-ports $_dns_port

### set iptables *filter
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

### allow clearnet access for hosts in $_non_tor
for _clearnet in $_non_tor 127.0.0.0/8; do
   iptables -t nat -A OUTPUT -d $_clearnet -j RETURN
   iptables -A OUTPUT -d $_clearnet -j ACCEPT
done

### redirect all other output to tor's TransPort
iptables -t nat -A OUTPUT -p tcp --syn -j REDIRECT --to-ports $_trans_port

### allow only tor output
iptables -A OUTPUT -m owner --uid-owner $_tor_uid -j ACCEPT
iptables -A OUTPUT -j REJECT

답변1

재부팅 후에도 설정 iptables이 자동으로 유지되지 않습니다. 따라서 Linux 배포판에 종료 시 현재 iptables 설정을 저장하고 재부팅 후 복원하는 다른 기능이 없으면 컴퓨터를 다시 시작할 때마다 해당 스크립트를 다시 실행해야 합니다.

물론, 아무도 당신이 해야 한다고 말하지 않았죠수동으로.

아마도 이 스크립트를 시스템의 시작 스크립트에 추가하는 방법을 살펴보아야 할 것입니다. 자세한 내용은 Linux 배포판에 따라 다릅니다.

관련 정보