Transparent Proxy Squid3 Dengan MikroTik

Untuk kali ini DSI akan melanjutkan artikel kemarin yang membahas Install squid3 pada part #1 dan part #2 namun belum support untuk melakukan transparent.

Transparent Proxy biasanya diterapkan agar admin proxy tidak perlu manual setting pada browser user / pelanggan saat membelokkan traffic browsing ke service proxy. Tproxy dan Intercept adalah mode transparent yang bisa diterapkan pada squid 3.1 ke atas.

Baca artikel instalasi squid :

install squid3 part #1

iinstall squid3 https part #2

Cara setting transparent proxy squid3 ini menggunakan mode tproxy dengan mikrotik yang akan melakukan firewall. Karena ini melanjutkan maka di anggap anda sudah mengikuti cara install squid3 pada artikel sebelumnya.

Install Squid3 untuk Transparent Proxy

Langkah Pertama 

  • Seperti biasa buka program putty lalu ssh ke PC ubuntu server kemudian login menggunakan user ‘root’
  • Install Paket pendukung untuk Tproxy pada OS ubuntu
apt-get install libcap-* -y
  • Hapus Instalasi squid sebelumnya
cd squid-3*
make uninstall
make clean
  • Lakukan compile ulang squid anda dengan mengaktifkan opsi ‘–enable-linux-netfilter’
./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib/squid --sysconfdir=/etc/squid --localstatedir=/var --libdir=/usr/lib --with-default-user=proxy --with-logdir=/var/log/squid --with-pidfile=/var/run/squid.pid --enable-ssl-crtd --with-openssl --enable-linux-netfilter
make && make install
  • Pada squid.conf tambahkan ‘http_port 3129 tproxy’ tepat di bawah ‘http_port 3128’ dan edit pada port 3127 menjadi ‘https_port 3127 tproxy ssl-bump…..’
https_port 3127 tproxy ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/myCA.pem
http_port 3128
http_port 3129 tproxy
  • atau hapus isi squid.conf yang sudah ada lalu copy script di bawah ini jangan lupa edit, kemudian masukan ulang pada squid.conf
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 1025-65535 # unregistered ports
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 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
https_port 3127 tproxy ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB cert=/etc/squid/ssl_cert/myCA.pem
http_port 3128
http_port 3129 tproxy
acl step1 at_step SslBump1
acl step2 at_step SslBump2
acl step3 at_step SslBump3
ssl_bump peek step1 all
ssl_bump bump all
 
# BAGIAN YANG PERLU DI SESUAIKAN
# DISINI SAYA MENGGUNAKAN PARTISI /cache untuk cache_dir, jika nama partisi anda berbeda silahkan sesuaikan
# UNTUK UKURAN cache_dir sesuaikan juga, disini yang mencontohkan 100gb,
cache_dir aufs /cache 100000 100 256
 
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
# END
  • Tambahkan Iptable pada ubuntu server dan simpan pada file “/etc/rc.local” tepat di atas ‘exit 0’
nano /etc/rc.local

copy script di bawah ini, lalu masukan di atas ‘exit 0’

iptables -t mangle -F
iptables -t mangle -X
 
echo 0 > /proc/sys/net/ipv4/conf/lo/rp_filter
echo 1 > /proc/sys/net/ipv4/ip_forward
 
ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100
 
iptables -t mangle -N DIVERT
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
 
iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT
 
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129
iptables -t mangle -A PREROUTING -p tcp --dport 8080 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129
iptables -t mangle -A PREROUTING -p tcp --dport 443 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3127
  • Sampai disini squid kita sudah support untuk transparent mode, untuk mengakhiri langkah pertama, silahkan restart ubuntu server anda.
reboot

Langkah Kedua

  • Sekarang buka mikrotik anda lewat winbox
  • copy script dibawah ini, kemudian paste ke dalam ‘new terminal’ pada menu winbox
/ip firewall mangle
add action=mark-connection chain=prerouting comment="HTTP + HTTPS TO PROXY" dst-port=80,8080,443 new-connection-mark=to_proxy protocol=tcp src-address=192.168.2.0/24
add chain=prerouting src-mac-address=08:00:27:F7:75:7D
add action=mark-routing chain=prerouting connection-mark=to_proxy new-routing-mark=tproxy_route passthrough=no
/ip route
add distance=1 gateway=192.168.1.2 routing-mark=tproxy_route

Ket:
192.168.1.2 adalah IP Ubuntu server (squid)
192.168.2.0/24 adalah Network Lan
08:00:27:F7:75:7D adalah Mac-Address Ubuntu

install squid3 - Transparent Proxy

Jika pada jaringan lokal anda terdapat dua network yang berbeda atau lebih, anda cukup copy mangle yang pertama dan tentukan IP dan port yang mau di belokkin ke proxy

ketika anda sudah masukan mangle di atas dan mau uji coba, pastikan squid anda sudah berjalan dengan baik, dan jika pada mikrotik anda terdapat mangle-mangle yang lain di sarankan di disable terlebih dulu, tujuanya untuk memastikan tproxy anda berjalan dengan semestinya.

firewall mangle di atas belum termasuk bypass HIT traffic, Bypass domain / IP dan Limit bandwidth. Mudah-mudahan lain waktu DSI akan menyajikan mangle yang sudah lengkap.

Demikian cara install squid3 yang sudah support transparent mode, semoga tutorial kali ini bisa bermanfaat buat pembaca semuanya.

Kami mohon Kritik dan saran mengenai artikel ini jika terdapat kesalahan baik penulisan atau pun script. Jangan lupa share artikel ini jika anda terbantu dengan tutorial di atas.

silahkan berkomentar dibawah ini untuk permasalahan mengenai artikel di atas.

Terimakasih atas kunjungan anda.

102 Comments

Leave a Reply