Cara mengatur bahwa domain tertentu disalurkan ke server lain

7

Saya bekerja di universitas sebagai asisten peneliti. Seringkali saya ingin menghubungkan dari rumah ke sumber daya universitas melalui http atau ssh, tetapi mereka diblokir dari akses luar. Oleh karena itu, mereka memiliki server ssh front-end di mana kita dapat ssh ke dan dari sana ke host lain. Untuk akses http, mereka menyarankan untuk membuat terowongan ssh seperti ini

ssh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi

dan letakkan pengaturan proxy browser Anda untuk menunjuk ke port 1234

Semua bagus dan berfungsi, tetapi saya tidak ingin membiarkan semua lalu lintas internet saya yang lain melewati server proxy ini, dan setiap kali saya ingin terhubung ke universitas saya harus melakukan langkah ini lagi.

Apa yang ingin saya:

  • Mengatur terowongan ssh setiap kali saya masuk komputer saya. Saya memiliki sertifikat, jadi tidak perlu kata sandi
  • Punya cara untuk mengarahkan kembali beberapa wildcard-domain selalu melalui ssh-server terlebih dahulu. Sehingga ketika saya mengetik intra.university.fi di browser saya, secara transparan permintaan akan melewati terowongan. Sama ketika saya ingin ssh ke sumber daya lain di universitas

Apakah ini mungkin? Untuk bagian http saya pikir saya mungkin harus mengatur proxy transparan lokal saya sendiri agar mudah dilakukan. Bagaimana dengan bagian ssh?

Peter Smit
sumber

Jawaban:

5

Ini sangat mudah dilakukan. Saya menggunakannya setiap saat untuk mengakses database di balik server web produksi kami.

1) Bagian pertama adalah sebuah pertanyaan Saya bertanya sedikit lalu .

Anda dapat alias di dalam Anda ~ / .bashrc.

Tambahkan baris itu

alias university_ssh="ssh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi" 

Dan memuat kembali file bashrc dengan sumber   ~ / .bashrc

Dan sekarang Anda hanya perlu mengetik university_ssh untuk ssh ke basis data Anda   server.

2) Selanjutnya Anda perlu mengedit file / etc / hosts Anda untuk menambahkan university.loc (.loc adalah TLD palsu) dan arahkan ke localhost :: 1234. Misalnya, file host saya terlihat seperti ini:

127.0.0.1       localhost
127.0.1.1       ubuntu-64-desktop
127.0.0.1       code2design.loc    localhost

dan Sekarang saya bisa mengetik code2design.loc untuk mengakses versi lokal saya code2design.com di PC saya.

3) Terakhir ubah proxy browser Anda kembali menjadi tidak ada karena Anda tidak memerlukannya lagi. Sejak mengetik universitas sekarang sudah diatur untuk menggunakan terowongan itu.

Diperbarui

Saya akan mencoba menambahkan port ke file hosts ( 127.0.0.1:port atau localhost:port ) dan Anda juga dapat mengubah .loc TLD ke nyata .fi TLD jika Anda khawatir tentang penghancuran host virtual.

Jadi bagi Anda mungkin terlihat seperti ini:

127.0.0.1       localhost
127.0.1.1       ubuntu-64-desktop
127.0.0.1       university.fi    localhost:1234
Xeoncross
sumber
Di mana tepatnya Anda mengarahkan hal-hal ke port 1234? Saya tidak melihat itu dalam contoh di langkah 2
Peter Smit
Jawaban ini belum sempurna, tetapi saya masih menerimanya karena ini adalah yang terbaik dan batas waktu satu jam. Masih bisakah Anda menjawab pertanyaan saya di atas di sini?
Peter Smit
1
Apa yang dilakukan port pada file host?
janmoesen
1
Kamu adalah. Sangat serius. Dari man hosts: IP_address canonical_hostname [aliases...]. IMO, ini bukan solusi yang memadai.
janmoesen
1
Perhatikan bahwa banyak host untuk alamat IP yang sama dapat ditempatkan pada satu baris, sehingga contoh Anda dapat ditulis ulang sebagai 127.0.0.1 localhost ubuntu-64-desktop university.fi.
Mathias Bynens
7

Saya menggunakan file Proxy Auto-Config (PAC) untuk ini. Saya akan menempelkan milik saya di sini, tetapi Wikipedia memiliki yang bagus contoh file .

Di browser Anda, arahkan "Gunakan konfigurasi otomatis proksi dari" ke file tersebut (mungkin dihosting di server web bersama). Berfungsi di hampir setiap browser yang layak.

Perhatikan bahwa Anda masih perlu mengatur terowongan SSH Anda. (Atau gunakan a ssh -D Proxy SOCKS hanya untuk host tertentu, yang ditentukan dalam PAC Anda - tetapi SOCKS tidak berfungsi di Opera.)

EDIT : Benar, karena tampaknya tidak ada banyak minat dari pihak Anda, saya akan sedikit memperluas jawaban saya. :-)

Untuk mengatur terowongan SSH Anda secara otomatis, sudo apt-get install autossh dan letakkan ini di crontab Anda:

@reboot autossh -L 1234:proxyserver.university.fi:8080 publicsshserver.university.fi

Atau, Anda dapat menempatkan perintah ssh di ~/.bash_profile atau ~ / .bashrc.

Sekarang, untuk menentukan domain ke proxy dan yang terhubung langsung, buat PAC seperti ini:

function FindProxyForURL(url, host)
{
    var httpProxy = 'PROXY 127.0.0.1:1234';
    var noProxy = 'DIRECT';
    var default_ = noProxy;

    // Host matches that use the HTTP proxy.
    var httpProxyMatches = [
        'intranet.university.fi',
        'webmail.university.fi',
        '*yourwildcard*'
    ];
    // Check all host patterns and network masks.
    for (var i = 0; i < httpProxyMatches.length; i++) {
    if (shExpMatch(host, httpProxyMatches[i])) {
        alert('HTTP ' + httpProxy + ' match for host: ' + host + '; url: ' + url);
        return httpProxy;
    }
    alert('DEFAULT ' + default_ + ' for host: ' + host + '; url: ' + url);
    return default_;
}
alert('PAC loaded at ' + new Date() + '.');

Lalu, buka pengaturan jaringan lanjutan Firefox dan arahkan ke file itu. Jika berhasil, Anda akan melihat pesan "PAC dimuat" di konsol JavaScript Anda (Ctrl + Shift + J). Jika Anda tidak menggunakan Firefox, hapus baris "lansiran".

Ini adalah PAC yang cukup mendasar, tetapi seharusnya membantu Anda dalam perjalanan. Milik saya juga melihat netmasks IP untuk menentukan layanan internal / eksternal, dll.

Beri tahu kami bagaimana Anda rukun.

janmoesen
sumber
1

Penolakan : belum menguji ini, hanya sebuah ide.

Mungkin Anda bisa memaksa domain pribadi untuk menggunakan 'proxy' hanya dengan mengedit konfigurasi host pada sistem lokal Anda. Jika Anda mengarahkan semua domain secara manual ke localhost, dan membuat terowongan dibuat, tidak akan:

http://privateaccess.tld:1234

Kirim permintaan ke:

localhost:1234

Yang benar-benar port forward ke server proxy jaringan internal. Permintaan masih harus untuk domain yang sama, sehingga server proxy harus merespons dengan benar.

Atau begitulah menurut saya. Sekali lagi, hanya sebuah ide.

Tim Lytle
sumber
Ya ini akan berhasil, tetapi itu tidak mudah dan cantik. Dan bagaimana dengan ssh? Apakah akan melalui?
Peter Smit
Anda menghisap terowongan ssh?
Tim Lytle
Untuk mudahnya, sepertinya tidak terlalu sulit, Anda mendaftar domain internal di file host Anda, dan Anda membuka terowongan ssh.
Tim Lytle
Ya, saya ssh melalui terowongan. Tuan rumah yang saya ingin ssh tidak tersedia dari internet, tetapi tersedia dari host "DMZ"
Peter Smit
1

FoxyProxy ( http://foxyproxy.mozdev.org/ ) menyelesaikan masalah pemilihan proxy otomatis. Ini dirancang untuk tujuan ini, tetapi, tentu saja, spesifik untuk firefox.

TREE
sumber
0

Coba atur SOCKS-proxy dengan ssh ( ssh -D <portnumber> publicsshserver.university.fi ) dan konfigurasikan browser Anda untuk menggunakan 127.0.0.1 dan <portnumber> sebagai proxy. Anda kemudian dapat menambahkan domain yang seharusnya atau tidak seharusnya menggunakan proxy. Untuk layanan lain (misalnya vnc) Anda dapat menggunakan tsocks untuk membuatnya menggunakan terowongan Anda.

Jimmy Hedman
sumber
Bagaimana saya bisa "menambahkan domain"? Di pengaturan browser saya? Opera hanya mendukung pola kecualikan. Bagaimana dengan koneksi ssh. Bagaimana saya bisa mengatur di sana untuk menggunakan proxy sox?
Peter Smit
Saya belum pernah menggunakan Opera jadi saya tidak bisa mengatakannya. Anda mungkin bisa menggunakan tsock untuk itu juga. Gunakan "tsocks ssh & lt; sitethatneedtheproxy & gt;" untuk ssh untuk duduk yang membutuhkanproxy melalui proxy kaus kaki Anda.
Jimmy Hedman
Opera masih tidak mendukung proxy SOCKS, saya khawatir. Mengalami masalah ini awal pekan ini. Itu memang mendukung PAC. Lihat jawaban saya. :-)
janmoesen
0

Anda mungkin harus melihat ke dalam menggunakan VPN bukan hanya ssh untuk masalah ini. Lihatlah ke openvpn.

txwikinger
sumber
Maaf, tetapi saya tidak dapat menginstal apa pun di server universitas (dan mereka tidak ingin VPN)
Peter Smit
0

Cara termudah adalah dengan menambahkan perintah ssh yang terhubung ke server ke ~ / .bash_profile Anda

Kemudian buat profil terpisah di firefox yang menggunakan pengaturan proxy ini dengan melakukan

$ firefox -profilemanager

Anda dapat membuat pintasan di desktop yang berjalan

firefox -P ProfileName -no-remote

Perintah no-remote memungkinkan Anda untuk menjalankan beberapa instance firefox secara bersamaan. Pastikan Anda mengonfigurasi pengaturan proxy di profil baru ini.

Dengan cara ini, setiap kali Anda ingin sumber daya universitas, buka saja profil firefox alternatif ini.

teknikqa
sumber