Transparent proxy with 1 Nic.
เนื่องจากผมมีแลนการ์ด 1 ใบ ผมจำเป้นต้องสร้าง virtual ethernet เพราะจะได้มี ip 2 ชุด
ผมใช้ Ubuntu 8.0.4
squid 2.6
eth0 ต่อ internet
แก้ไข
#pico /etc/network/interfaces
# The primary network interface
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
name Ethernet internet
address 192.168.0.18
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
auto eth0:0
iface eth0:0 inet static
name Ethernet alias LAN card
address 192.168.1.1
netmask 255.255.255.0
broadcast 192.168.1.255
network 192.168.1.0
------ตัวอย่าง ifconfig -------------
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.0.18 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: XX:XX:XX:XX:XX:XX/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:196645 errors:0 dropped:0 overruns:0 frame:0
TX packets:172811 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:50390423 (48.0 MB) TX bytes:49882326 (47.5 MB)
eth0:0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
-----------------------------------
เริ่มติดตั้ง squid
apt-get install squid
แก้ไข config
pico /etc/squid/squid.conf
add # http_port 3128
add acl our_networks src 192.168.1.0/24
add http_port 3128 transparent
add icp_port 3130
add http_access allow our_networks
สร้างไพล์ pico /etc/fw.proxy แล้วเพิ่มข้อความตามข้างล่างนี้
---------------------
#!/bin/sh
# Squid server IP
SQUID_SERVER="192.168.1.1"
# Interface connected to Internet
INTERNET="eth0"
# Address connected to LAN
LOCAL="192.168.1.0/24"
# Squid port
SQUID_PORT="3128"
# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Enable Forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables -t nat -A POSTROUTING -o $INTERNET -j MASQUERADE
iptables -A FORWARD -s $LOCAL -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -s $LOCAL -j ACCEPT
iptables -A OUTPUT -s $LOCAL -j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
iptables -t nat -A PREROUTING -s $LOCAL -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# if it is same system
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT
# DROP everything and Log it
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP
--------------------------
ตามด้วยคำสั่ง
# chmod +x /etc/fw.proxy
# /etc/fw.proxy
# /etc/init.d/squid restart
ถึงตรงนี้ สามารถใช้ proxy แบบ transparent ได้ แต่ไม่สามารถ ถอด ip ได้ เพราะ DNS ยังไม่ได้ทำงาน ต้องติดตั้ง bind ต่อไป...
อ้างอิงจาก http://teladan98.wordpress.com/2007/12/05/transparent-proxy-server-with-one-nic/
http://www.cyberciti.biz/tips/linux-setup-transparent-proxy-squid-howto.html
http://www.kawanchai.net/2008/doc/thai_manual_Ubuntu_server.rar
ไม่มีความคิดเห็น:
แสดงความคิดเห็น