Edit 3:Итак, я все еще работаю над полным ответом, но по крайней мере у меня есть прокси-сервер с Squid. Мне просто нужно выяснить, как заставить Tor и I2P работать с Squid. (у меня также есть проблемы с получением прокси для работы вне браузера при тестировании на моем Android, но это выходит за рамки этого вопроса, плюс я должен Отключить подключение к данным, чтобы получить соединения серверов для работы на моем android, не бросая DNS не найдена ошибка, для таких вещей, как сетевой адаптер.сеньор и mailpile.сеньор.)
Edit 3 (Продолжение): я изменил конфигурацию, чтобы я мог подключиться к Tor .onion и I2P включены .в I2P. Я испытал I2P, но с Tor в настоящее время заблокированы на подключение, мне придется обойти, чтобы тест, чтобы увидеть, если Tor работает, однако, это в настоящее время достаточно хорошо для меня, и, возможно, в будущем, если я вам Тор разблокировали, я добавлю в свой собственный отдельный прокси для Tor (для целей ФЗ "адресная книга" (Как раздача не поддерживает CNAME, к сожалению: ()). (Я получил помощь от https //serverfault.com/questions/198806/squid-selects-parent-depending-on-requested-url?newreg=6cd1dcadf97e4794bfcf4f1dcf977426). Это достаточно хорошо для меня, чтобы принять этот ответ, поэтому все, что осталось, - это настройки и тестирование! :)
В принципе, для моей реализации моей частной сети у меня сначала есть мой браузер, который затем проходит через мой прокси-сервер, который затем будет решать запросы dns внутри (например, при использовании dns-сервера моего ноутбука), который затем соедините меня с любым сайтом, который доступен для моего ноутбука.
Что касается распознавателя DNS, я использую dnsmasq с файлом hosts, расположенным в /etc/dnsmasq.хосты, которые затем направляют что-либо не кэшированное или найденное в файле hosts dnscrypt-proxy. DNSMasq находится на 127.0.0.1:53, а DNSCrypt-на 127.0.0.1: 52.
сайты нашли в раздача.хосты расположены на портах 80 и 443 и используют nginx для маршрутизации любых соединений с другими серверами, такими как блог.senor маршрутизирует на сервер Jekyll, расположенный в 127.0.0.2: 4000 (я, вероятно, должен заблокировать прямой доступ к этим URL-адресам с помощью Squid), ну, так или иначе nic.сеньор просто указывает на https://mailpile.сеньор/ поскольку в настоящее время у него нет надлежащего сайта и mailpile.сеньор заходит в mailpile 127.0.0.1: 33411. Этот TLS работает, потому что у меня есть мой собственный корневой ЦС я импортировал в мой телефон и ноутбук (я сгенерировал с открытым SSL с помощью инструкции из https://datacenteroverlords.com/2012/03/01/creating-your-own-ssl-certificate-authority/).
пример конфигурационного файла nginx, который я использую для своих сайтов (с небольшими изменениями):
/ etc/nginx / conf.d / mailpile.conf
## our http server at port 80
server {
listen 127.0.0.3:80 default;
server_name mailpile.senor;
## redirect http to https ##
rewrite ^ https://$server_name$request_uri? permanent;
}
## our https server at port 443
server {
# IP Address, Port, and Protocol to use
listen 127.0.0.3:443 ssl;
# Server URL
server_name mailpile.senor;
# Certs
ssl_certificate certs/public/mailpile.senor.pub.pem;
ssl_certificate_key certs/private/mailpile.senor.priv.pem;
# Only use "Safe" TLS protocols, not SSL or TLS 3.0 (POODLE Attack)
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# Use ciphers the server supports
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
# Don't know how secure this elliptic curve algorith is, so needs more research!
#ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
# Basically reuses ssl sessions to speed up page load
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx >= 1.5.9
# Stapling is sending OSCP info (may require resolver too)
#ssl_stapling on; # Requires nginx >= 1.3.7
#ssl_stapling_verify on; # Requires nginx => 1.3.7
#resolver $DNS-IP-1 $DNS-IP-2 valid=300s;
#resolver_timeout 5s;
# Remember HSTS? Well, have FUN!
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
# Prevents this site from being loaded in an iframe
add_header X-Frame-Options DENY;
# Prevents browser from changing MIME-Types from what the server says (supposedly more secure)
add_header X-Content-Type-Options nosniff;
# File with revoked certificates used to determine if client-side cert is valid or not!
#ssl_dhparam /etc/nginx/ssl/dhparam.pem;
location / {
access_log /var/log/nginx/mailpile_access.log;
error_log /var/log/nginx/mailpile_error.log info;
proxy_pass http://127.0.0.1:33411;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
/и т. д./dnsmasq.хозяева
127.0.0.1 nic.senor
127.0.0.2 blog.senor
127.0.0.3 mailpile.senor
редактировать 1: я просто Wiresharked мой прокси и понял, что основные auth не шифровать мои данные на всех, так что я теперь также работает над фиксацией это!
Edit 2: я нашел http //patchlog.com/security/squid-digest-authentication/ (вынул: из-за необходимости 10 повторений, чтобы опубликовать более 2 ссылок), который помог мне узнать, как создать систему дайджест-аутентификации и как создать новый файл паролей, который просто создает md5sum от $user:$realm:$pass. Я также узнал, что digest_pw_auth был переименован в digest_file_auth из https //bbs.archlinux.org/viewtopic.php?id=152346.
/ etc / squid / squid.conf
auth_param digest program /usr/lib/squid/digest_file_auth -c /etc/squid/passwords
auth_param digest realm Proxy
auth_param digest child 5
auth_param digest nonce_garbage_interval 5 minutes
auth_param digest nonce_max_duration 30 minutes
auth_param digest nonce_max_count 50
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_port 3128
# External Proxies
# Format is: hostname type http_port udp_port
cache_peer 127.0.0.1 parent 4444 0
cache_peer 127.0.0.2 parent 9050 0
# Determines When to Use External Proxies
cache_peer_domain 127.0.0.1 .i2p
cache_peer_domain 127.0.0.2 .onion
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 1025-65535 # unregistered ports
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
#http_access allow localnet
#http_access allow localhost
http_access deny all
coredump_dir /var/spool/squid
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
vrefresh_pattern . 0 20% 4320