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 :
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
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.
2016/04/30 15:23:01 kid1| ERROR: NAT/TPROXY lookup failed to locate original IPs on local
Salah apanya ya mas?
Udah bisa.. ternyata di compile ulang squidnya.. trims..
Mantap gan..
Semoga terbantu tutorial transparent proxy squid3 nya
Sebelumnya saya ucapkan banyak terima kasih atas artikelnya, sangat bermanfaat sekali..Saya sudah coba ikuti semuanya, untuk browsing dengan firefox dan chrome baik itu http maupun https sudah berjalan dengan baik, tapi yang saya herankan artikel squid ini tidak bekerja untuk game online point blank, gamenya tidak bisa memulai dan kalaupun bisa selalu muncul XIGNCODE error bugtrap..Mohon bantuannya gan..Terima Kasih
bypass IP xingxode nya gan
TCP_DENIED/200 0 CONNECT 192.168.0.200:3127 ????
squid.conf nya seperti gimana
acl localnet src 10.0.0.0/24 # RFC1918 possible internal network
acl localnet src 101.101.101.0/24 # RFC1918 possible internal network
acl localnet src 102.102.102.0/24 # RFC1918 possible internal network
acl localnet src 103.103.103.0/24 # RFC1918 possible internal network
acl localnet src 172.16.0.0/24 # RFC1918 possible internal network
acl localnet src 192.168.0.0/24 # RFC1918 possible internal network
acl localnet src 192.168.1.0/24 # 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
cache_dir aufs /cache 12000 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
???
ini “TCP_DENIED / 200 0 CONNECT 192.168.0.200:3127” pertunjukkan di log squid setelah configure squid menjadi transparan
Bisakah Anda menolong saya ?
iptables :
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
youtube.com ngk bisa koneksi, tp facebook.com bisa gan..ini lognya
2016/06/13 13:08:48 kid1| Logfile: opening log stdio:/var/log/squid/netdb.state
2016/06/13 13:08:48 kid1| Logfile: closing log stdio:/var/log/squid/netdb.state
2016/06/13 13:08:48 kid1| NETDB state saved; 27 entries, 21 msec
2016/06/13 13:09:00 kid1| fqdncacheParse: No PTR record for ‘40.76.8.142’
2016/06/13 13:09:00 kid1| fqdncacheParse: No PTR record for ‘40.76.8.142’
2016/06/13 13:09:00 kid1| hold write on SSL connection on FD 15
2016/06/13 13:09:01 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:09:04 kid1| hold write on SSL connection on FD 28
2016/06/13 13:09:17 kid1| hold write on SSL connection on FD 28
2016/06/13 13:09:48 kid1| hold write on SSL connection on FD 44
2016/06/13 13:09:48 kid1| hold write on SSL connection on FD 51
2016/06/13 13:09:48 kid1| hold write on SSL connection on FD 53
2016/06/13 13:09:48 kid1| hold write on SSL connection on FD 54
2016/06/13 13:10:01 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:10:04 kid1| hold write on SSL connection on FD 12
2016/06/13 13:11:49 kid1| hold write on SSL connection on FD 32
2016/06/13 13:11:49 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:11:49 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:11:49 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:11:50 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:11:50 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:11:50 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:11:50 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:11:50 kid1| hold write on SSL connection on FD 44
2016/06/13 13:11:50| Error sending to ICMPv6 packet to [2404:6800:4003:c01::ef]. ERR: (101) Network is unreachable
2016/06/13 13:11:50| Error sending to ICMPv6 packet to [2404:6800:4008:c02::5e]. ERR: (101) Network is unreachable
2016/06/13 13:11:51 kid1| hold write on SSL connection on FD 51
2016/06/13 13:11:51 kid1| hold write on SSL connection on FD 61
2016/06/13 13:11:52 kid1| hold write on SSL connection on FD 32
2016/06/13 13:11:53 kid1| hold write on SSL connection on FD 63
2016/06/13 13:11:54| Error sending to ICMPv6 packet to [2404:6800:4008:c04::63]. ERR: (101) Network is unreachable
2016/06/13 13:11:54 kid1| hold write on SSL connection on FD 32
2016/06/13 13:11:54 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:11:54 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:11:54 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:11:54 kid1| hold write on SSL connection on FD 14
2016/06/13 13:11:54 kid1| hold write on SSL connection on FD 64
2016/06/13 13:11:54 kid1| hold write on SSL connection on FD 32
2016/06/13 13:11:59 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
2016/06/13 13:11:59 kid1| hold write on SSL connection on FD 82
2016/06/13 13:11:59 kid1| hold write on SSL connection on FD 83
2016/06/13 13:13:22 kid1| fqdncacheParse: No PTR record for ‘192.168.88.111’
Tolong di bantu ya
dns di ubuntu dan squid nya coba cek gan
TCP_DENIED/200 0 CONNECT 192.168.0.200:3127 Shows in squid logs ?
kalo tanpa mikrotik bisa ga yah ? …. langsung dari PC router proxy ke client …
Apa cukup sampai disini :
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
Halo, Ada beberapa hal yang mau saya tanyakan mengenai transparant proxy dengan manual proxy. pertanyaan nya kenapa pada saat menggunakan manual konfigurasi proxy pada browser. website dan layanan local yang ada di server local saya bisa di akses dan ketika saya ubah ke transparant proxy. kenapa website dan layanan local server tidak dapat di akses di jaringan local saya tetapi akses keluar seperti google dll bisa tetapi yang di local tidak bisa. walaupun sudah bypas port pada mikrotiknya. Terimakasih Mohon Sangat untuk solusinya.
kalo penampakan squid.log seperti ini, kenapa yah gan?
tail -f /var/log/squid/access.log
1469283979.070 59304 192.168.11.254 TAG_NONE/200 0 CONNECT 31.13.78.8:443 – ORIGINAL_DST/31.13.78.8 –
Facebook ga work om, ssl udah di import