Linux'ta Mobil Proxy Yapılandırması
Linux’ta her araç kendi proxy ayarlarını yönetir; bu nedenle, ayarları tek bir yerden yapmak mümkün değildir. Bu kılavuzda, ortam değişkenleri ve bunların kapsamı, masaüstü ayarları ve bu ayarların eksiklikleri ile kendi dosyalarını kullanmayı gerektiren araçlar ele alınmaktadır.
- Çevre değişkenleri çoğu araca ulaşır — curl, wget, git, pip ve npm, http_proxy ve https_proxy değişkenlerini okur.
- sudo bunları siler — yetki düzeyini yükseltmiş bir komut, proxy ayarınızı kaybedersiniz; tabii bunu kasıtlı olarak yönlendirmezseniz.
- apt, tasarım gereği bunları göz ardı eder — paket yöneticisi, kabuk ortamınız yerine kendi yapılandırma dosyasını kullanmayı tercih eder.
- Masaüstü ayarı sistem genelinde geçerli değildir — bu ayar yalnızca GNOME uygulamalarını etkiler ve terminaliniz bu uygulamalar arasında yer almaz.
Statik bir sunucu adresini beyaz listeye ekleyin ve kimlik bilgilerini tamamen atlayın.
Bir profildeki dört ihracat, kullanıcı alanının büyük bir kısmını oluşturur.
Ortam Değişkenleri ve Etki Alanları
Linux’ta, diğer işletim sistemlerinde olduğu anlamıyla bir sistem proxy ayarı yoktur. Bunun yerine bir kural geçerlidir: Çoğu yazılım, http_proxy ve https_proxy ortam değişkenlerini okur ve bunları atlaması gereken ana bilgisayarlar için no_proxy ayarını dikkate alır. Bu kural, curl, wget, git, pip, npm ve çoğu programlama dili çalışma ortamı gibi pek çok durumu kapsar; ancak bu bir kural değil, bir gelenektir ve bu kılavuzun asıl konusu istisnalardır.
export http_proxy="http://user123:s3cret@proxy.example.net:8000" export https_proxy="$http_proxy" export no_proxy="localhost,127.0.0.1,::1,.internal.example.com,10.0.0.0/8" # Some tools read only the upper-case names export HTTP_PROXY="$http_proxy" export NO_PROXY="$no_proxy"
no_proxy değerini boş bırakmak yerine kasıtlı olarak ayarlayın. Bu ayar yapılmadığında, localhost ve dahili ana bilgisayar adlarına yönelik istekler proxy'ye gönderilir, ancak proxy bu adreslere erişemez — bu nedenle, beş dakika önce sorunsuz çalışan bir veritabanı bağlantısı veya durum kontrolü, proxy sorunuyla hiçbir ilgisi olmayan nedenlerle zaman aşımına uğrar. Virgülle ayrılmış, boşluksuz ve baştaki nokta alt etki alanlarıyla eşleşir.
https_proxy'nin http:// şemasını kabul ettiğini unutmayın. Bu şema, hedefin hangi protokolü kullandığını değil, proxy'ye nasıl ulaşılacağını belirtir; istemci bir tünel açar ve TLS bu tünel içinde uçtan uca çalışır. SOCKS5 için, sondaki h harfi sayesinde DNS çözümlemesinin de proxy üzerinden yapılmasını sağlayan socks5h biçimini tercih edin — bu harf olmadan, makineniz her ana bilgisayar adını yerel olarak çözümler ve ziyaret ettiğiniz tüm etki alanları listesini kendi ağınıza sızdırır.
| Katman | Bunu kim okur? | Eksiklikleri |
|---|---|---|
| Ortam değişkenleri | curl, wget, git, pip, npm, çoğu çalışma ortamı | sudo, apt aracılığıyla çalıştırılan her şey ve systemd tarafından başlatılan hizmetler |
| Masaüstü proxy ayarı | GNOME Web ve masaüstü yapılandırmasını okuyan uygulamalar | Terminaliniz ve bu terminalden başlatılan her şey |
| Araç başına yapılandırma | apt, Docker, snap, git — her birinin kendine ait bir dosyası var | Hiçbir şey, ancak her araç için bir tane yazmalısınız |
| proxychains | Herhangi bir program, ağ çağrılarını yakalayarak | Statik olarak bağlanmış ikili dosyalar ve libc ağ işlevlerini kullanmayan her şey |
Masaüstü Proxy Ayarı ve Kapsamı
GNOME, KDE ve diğer masaüstü ortamlarının tümü bir ağ proxy ayarı sunar ve bu, Linux’ta başka türlü bulunmayan sistem genelinde bir kontrol mekanizması gibi görünür. Oysa öyle değildir. Bu ayar, bir masaüstü yapılandırma anahtarı oluşturur ve yalnızca bu anahtarı kasıtlı olarak okuyan uygulamalar etkilenir — pratikte GNOME Web ve birkaç GNOME uygulaması.
Terminaliniz bunu okumuyor. Terminalinizden çalıştırdığınız hiçbir şey de okumuyor. Masaüstü proxy’sini ayarladıktan sonra curl’ün neden gerçek adresinizi döndürdüğünü merak etmek, muhtemelen Linux’ta yapılan en yaygın proxy hatasıdır ve bu hatayı yapmak son derece mantıklıdır: Arayüzde, bu ayarın kapsamının ne kadar dar olduğuna dair hiçbir ipucu bulunmuyor.
Masaüstü ayarını, sistem menüsünde yer alan uygulama bazlı bir ayar olarak değerlendirin. Kullanıcı ortamının tamamının proxy yoluyla yönlendirilmesini istiyorsanız, bunun için kabuk profilinizdeki ortam değişkenlerini kullanabilirsiniz — ancak bunlar bile sudo sınırında durur.
apt, sudo ve Kendi Dosyasına İhtiyaç Duyan Araçlar
Çalışan bir Linux proxy kurulumunu kesin olarak bozan iki şey vardır ve her ikisi de ortamın bir sınırdan geçememesiyle ilgilidir.
İlki sudo’dur. Güvenlik nedenleriyle sudo, komutu çalıştırmadan önce çoğu ortam değişkenini siler; dolayısıyla özenle dışa aktardığınız proxy artık mevcut olmaz. Tek seferlik bir durum, sudo'dan ortam değişkenlerini korumasını isteyerek düzeltilebilir; kalıcı bir çözüm ise, proxy değişkenlerini sudoers dosyasındaki env_keep listesine eklemektir. Bu dosya, doğrudan değil, visudo ile düzenlenmelidir.
İkincisi ise “apt” komutudur; bu komut, tasarım gereği ortam ayarlarını göz ardı eder ve kendi yapılandırmasını kullanır. Değişkenleri her seferinde sudo aracılığıyla aktarmak işe yarar, ancak bir yapılandırma dosyası daha güvenilirdir; çünkü komutu kim çalıştırırsa çalıştırsın ya da nasıl çalıştırırsa çalıştırsın, bu yapılandırma her durumda geçerlidir.
# apt -- write /etc/apt/apt.conf.d/95proxies Acquire::http::Proxy "http://user123:s3cret@proxy.example.net:8000"; Acquire::https::Proxy "http://user123:s3cret@proxy.example.net:8000"; # sudo -- preserve the environment for one command sudo -E some-command # sudo -- permanently, via `sudo visudo` Defaults env_keep += "http_proxy https_proxy no_proxy HTTP_PROXY HTTPS_PROXY NO_PROXY" # git, which keeps its own config git config --global http.proxy "http://user123:s3cret@proxy.example.net:8000"
Docker’ın ayrı bir başlık altında ele alınması gerekir, çünkü aynı adı taşıyan iki farklı sorunu vardır. Daemon, görüntüleri çekmek için bir proxy’ye ihtiyaç duyar ve bu, bir systemd drop-in’inde yapılandırılır; konteynerler ise derleme argümanları veya ortam değişkenleri olarak aktarılan bir proxy’ye ihtiyaç duyar. Birini yapılandırmak diğerine hiçbir fayda sağlamaz; bu da, görüntülerin sorunsuz bir şekilde çekilmesine rağmen içindeki uygulamanın hiçbir şeye erişememesi gibi tanıdık bir durumu ortaya çıkarır.
Proxy’yi hiç desteklemeyen yazılımlar için — bazı eski ağ yardımcı programları, birkaç kapalı kaynaklı araç — proxychains standart çözümdür. Bu araç, programın ağ çağrılarını yakalayan ve bunları kendi yapılandırma dosyasında tanımlanan bir proxy üzerinden yönlendiren bir kütüphaneyi önceden yükler; ayrıca SOCKS5 ve HTTP protokollerini de destekler. Statik olarak bağlanmış ikili dosyalar için ise bir çözüm sunamaz, çünkü bu durumda yakalanacak bir şey yoktur.
Bir Komutun Gerçekte Hangi Proxy’yi Kullandığını Belirleme
Her araç bağımsız olarak yapılandırıldığından, asıl önemli olan soru proxy’nin çalışıp çalışmadığı değil — bu komutun hangi yapılandırmayı okuduğudur. Ayarları incelemek yerine komuta doğrudan sorun.
env | grep -i proxy curl -v https://api.ipify.org 2>&1 | head -20 curl https://api.ipify.org ; echo # through whatever env says curl --noproxy '*' https://api.ipify.org ; echo # deliberately direct sudo -E env | grep -i proxy # does sudo keep them?
| Belirti | En olası neden |
|---|---|
| Shell'de çalışıyor, sudo altında hata veriyor | sudo, ortam değişkenlerini sildi. preserve bayrağını veya env_keep seçeneğini kullanın. |
| curl proxy üzerinden çalışıyor, apt ise çalışmıyor | apt, ortam değişkenlerini dikkate almaz. apt.conf.d dizinine bir dosya ekleyin. |
| Masaüstü ayarı açık, terminal etkilenmiyor | Tasarlanan şekilde çalışıyor. Masaüstü tuşu kabuğa ulaşmıyor. |
| Yerel hizmetlerde aniden zaman aşımı hatası oluşuyor | no_proxy ayarı devre dışı bırakıldığından, localhost trafiği proxy'ye yönlendiriliyor. |
| Görüntüler yükleniyor, kapsayıcılarda ağ bağlantısı yok | Docker arka plan programı bir proxy üzerinden çalışır, ancak konteynerler çalışmaz. |
| Ayarlar doğru, hiçbir şey değişmedi | Profil düzenlendi, ancak hiçbir kaynak belirtilmedi. Yeni bir komut istemi penceresi açın. |
Eğer yapılandırmanızdan ziyade uç noktanın kendisini doğrulamak istiyorsanız, ücretsiz PXM2 proxy kontrol aracı Bunu bir tarayıcıdan test eder ve tespit edilen proxy türünü ve çıkış ülkesini bildirir.
Linux için bir Mobil Proxy edinin
Canlı PXM2 konumları — çıkış IP’sine ihtiyacınız olan ülkeyi seçin ve bu sayfadaki adımları izleyerek yapılandırın:
Amerika Birleşik Devletleri
Birleşik Krallık
Fransa
Sık Sorulan Sorular
Linux'ta proxy ayarını nasıl yaparım?
Komut satırınızda http_proxy ve https_proxy ayarlarını dışa aktarın ve bu ayarları atlaması gereken ana bilgisayarlar için no_proxy ayarını yapın. Bu ayarların kalıcı olması için bunları komut satırı profilinize ekleyin. Bu ayar, curl, wget, git, pip, npm ve çoğu komut satırı yazılımını kapsar; ancak apt ve birkaç başka araç için ek olarak kendi yapılandırmalarının yapılması gerekir.
Apt neden proxy ortam değişkenlerimi göz ardı ediyor?
Tasarım gereği, apt komutu sudo altında çalıştırıldığında kabuk ortamınızı devralmaz ve kendi yapılandırmasını kullanır. Ayarın, komutu kimin ve nasıl çalıştırdığına bakılmaksızın kalıcı olmasını sağlamak için /etc/apt/apt.conf.d/ dizinindeki bir dosyaya bir Acquire proxy yönergesi ekleyin. Bu, her seferinde değişkenleri sudo aracılığıyla aktarmaktan daha güvenilirdir.
Proxy'im neden sudo altında çalışmıyor?
sudo, komutu çalıştırmadan önce çoğu ortam değişkenini kaldırır; bu nedenle, dışa aktardığınız proxy değişkeni komuta asla ulaşmaz. Tek seferlik kullanım için ortam değişkenlerini koruyan bayrağı kullanarak sudo’yu çalıştırın ya da kalıcı olarak kullanmanız gerekiyorsa, visudo aracılığıyla sudoers dosyasındaki env_keep listesine proxy değişkenlerini ekleyin.
GNOME ağ proxy ayarı terminal için de geçerli mi?
Hayır. Masaüstü proxy ayarı, masaüstü yapılandırmasını okuyan uygulamalara — GNOME Web ve birkaç GNOME uygulamasına — etki eder. Terminal yardımcı programları ise ortam değişkenlerini okur ve bu ayardan hiç etkilenmez. Bu ayarı yapıp curl’ün de buna uyacağını beklemek, Linux’ta proxy kullanımıyla ilgili en yaygın hatalardan biridir.
Proxy desteği olmayan bir uygulamayı nasıl proxy üzerinden çalıştırabilirim?
Programın ağ çağrılarını yakalayan ve bunları kendi dosyasında yapılandırdığınız bir proxy üzerinden yönlendiren proxychains’i kullanın. Bu, ne ortam değişkenlerini ne de kendi proxy ayarlarını okuyan yazılımlar için standart çözümdür ve hem SOCKS5 hem de HTTP ile çalışır.
İlgili Mobil Proxy Kılavuzları
Linux sisteminiz masaüstü bilgisayar değil de bir sunucuysa, IP beyaz listesi genellikle daha iyi bir kimlik doğrulama seçeneğidir — kurulum kılavuzunda bunun ne zaman tercih edilmesi gerektiği açıklanmaktadır.
Kurulum kılavuzları
Temel mobil proxy kılavuzları
Linux Sunucunuzu Gerçek Bir İSS IP Adresi Üzerinden Yönlendirin
Sınırsız bant genişliği ve sınırsız rotasyona sahip özel 4G/5G modemler — HTTP(S) ve SOCKS5 uç noktaları; sabit adrese sahip sunucular için IP beyaz liste özelliği.
Mobil Proxy Alın