如何在Linux中设置透明代理_unix linux

  1.什么是透明代理?

  如果你问:我如何才能使得用户的浏览器不需要任何代理设置就能使用我的Squid cache代理服务器上网?此时你就需要使用透明代理。透明代理让你的客户端不需设置任何代理,当包经过透时代理服务器时实际上被重定向到squid代理服务器的代理端口(如8080),即由本地代理服务器向外请求所需数据然后拷贝给客户端。
  2.我需要什么样的环境才能实现透明代理?

  a.客户端的windows PC的网关必须设成Squid代理服务器,因为既然你的browser中没有任何代理设置,你要访问某个站点时,包必须经经过squid代理服务器才能被重定向,故这是最基本的条件。

  b.客户端必须正确设置DNS服务器。因为既然现在不用设置任何代理。则DNS必须由browser来解析,也就是要由客户端的PC中TCP/IP中设置的DNS服务器来正确解析出某个站点的IP地址来。

  c.服务器端可以安装squid代理服务器,1.x or 2.x版本均可。

  3.配置Squid代理,启动透明代理功能

  Squid-2

  加下面的行到你的/etc/squid/squid.conf中

  http_port 8080
  httpd_accel_host virtual
  httpd_accel_port 80
  httpd_accel_with_proxy on
  httpd_accel_uses_host_header on

 Squid-1.1

  加下面的行到/etc/squid.conf

  http_port 8080
  httpd_accel virtual 80
  httpd_accel_with_proxy on
  httpd_accel_uses_host_header on

  4. 重启动squid. 用下面的命令:

    #/usr/sbin/squid -k reconfigure

  如提示内核不支持透明代理。则你需要重新编译内核,enable 透明代理的支持。

  下面是你需要启动的内核项目:

  [*] Network firewalls
  [ ] Socket Filtering
  [*] Unix domain sockets
  [*] TCP/IP networking
  [ ] IP: multicasting
  [ ] IP: advanced router
  [ ] IP: kernel level autoconfiguration
  [*] IP: firewalling
  [ ] IP: firewall packet netlink device
  [*] IP: always defragment (required for masquerading)

  [*] IP: transparent proxy support

  5. 下面的命令针对Linux 2.2.x内核:

  # Accept all on lookback
  /sbin/ipchains -A input -j ACCEPT -i lo
  #Accept my own IP, to prevent loops (repeat for each interface/alias)
  /sbin/ipchains -A input -j ACCEPT -p tcp -d 192.168.11.1/32 80
  #Send all traffic destined to port 80 to Squid on port 80
  /sbin/ipchains -A input -j REDIRECT 8080 -p tcp -s 192.168.11.0/24 -d 0/0 80

  下面的命令针对Linux 2.0.x内核:

  # Accept all on loopback
  ipfwadm -I -a accept -W lo
  # Accept my own IP, to prevent loops (repeat for each interface/alias)
  ipfwadm -I -a accept -P tcp -D 192.168.11.1/32 80
  # Send all traffic destined to port 80 to Squid on port 3128
  ipfwadm -I -a accept -P tcp -S 192.168.11.0/24 -D 0/0 80 -r 8080

  6.应注意的问题:

  a. 这种透明代理只能针对http协议,不能针对FTP协议
  b. PC的默认网关应设成squid 代理服务器
  c. 防火墙重定向规则在其它的input规则的前面,注意顺序。

  如:

    /etc/rc.d/rc.firewall:

#!/bin/sh
# rc.firewall Linux kernel firewalling rules
FW=/sbin/ipfwadm

# Flush rules, for testing purposes
for i in I O F # A # If we enabled accounting too
do
${FW} -$i -f
done

# Default policies:
${FW} -I -p rej # Incoming policy: reject (quick error)
${FW} -O -p acc # Output policy: accept
${FW} -F -p den # Forwarding policy: deny

# Input Rules:

# Loopback-interface (local access, eg, to local nameserver):
${FW} -I -a acc -S localhost/32 -D localhost/32

# Local Ethernet-interface:

# Redirect to Squid proxy server:
${FW} -I -a acc -P tcp -D default/0 80 -r 8080

# Accept packets from local network:
${FW} -I -a acc -P all -S localnet/8 -D default/0 -W eth0

# Only required for other types of traffic (FTP, Telnet):

# Forward localnet with masquerading (udp and tcp, no icmp!):
${FW} -F -a m -P tcp -S localnet/8 -D default/0
${FW} -F -a m -P udp -S localnet/8 -D default/0

Here all traffic from the local LAN with any destination gets redirected to the
local port 8080. Rules can be viewed like this:

IP firewall input rules, default policy: reject
type prot source destination ports
acc all 127.0.0.1 127.0.0.1 n/a
acc/r tcp 10.0.0.0/8 0.0.0.0/0 * -> 80 => 8080
acc all 10.0.0.0/8 0.0.0.0/0 n/a
acc tcp 0.0.0.0/0 0.0.0.0/0 * -> *

时间: 2024-09-18 17:40:17

如何在Linux中设置透明代理_unix linux的相关文章

如何在Linux下配置socks5代理_unix linux

简介: 在Linux下有各种各样的代理程序可用,象最常用的Squid,是http/https代理,也能代理ftp请求,但它实际上 是个HTTP代理程序,不是ftp代理,但它能处理ftp代理请求,就象浏览器处理ftp请求一样的方法工作,有些 程序只能设置成使用socks代理,象CuteFTP;还有象Wu-FTP只能设置成使用ftp代理(这里的ftp代理是标准的 ftp代理,不是Squid所支持的那种方式);ICQ 2000能同时接受https代理和Socks代理;NetVampire能接受标准 的

Red Hat Linux中自动运行程序_unix linux

    1.开机启动时自动运行程序 Linux加载后, 它将初始化硬件和设备驱动, 然后运行第一个进程init.init根据配置文件继续引导过程,启动其它进程.通常情况下,修改放置在 /etc/rc或 /etc/rc.d 或 /etc/rc?.d 目录下的脚本文件,可以使init自动启动其它程序.例如:编辑 /etc/rc.d/rc.local 文件,在文件最末加上一行"xinit"或"startx",可以在开机启动后直接进入X-Window.     2.登录时自

Linux有问必答:如何在curl中设置自定义的HTTP头

Linux有问必答:如何在curl中设置自定义的HTTP头 问题:我正尝试使用curl命令获取一个URL,但除此之外我还想在传出的HTTP请求中设置一些自定义的头部字段.我如何能够在curl中使用自定义的HTTP头呢? curl是一个强大的命令行工具,它可以通过网络将信息传递给服务器或者从服务器获取数据.他支持很多的传输协议,尤其是HTTP/HTTPS以及其他诸如FTP/FTPS, RTSP, POP3/POP3S, SCP, IMAP/IMAPS协议等.当你使用curl向一个URL发送HTTP

Python程序中设置HTTP代理_python

0x00 前言 大家对HTTP代理应该都非常熟悉,它在很多方面都有着极为广泛的应用.HTTP代理分为正向代理和反向代理两种,后者一般用于将防火墙后面的服务提供给用户访问或者进行负载均衡,典型的有Nginx.HAProxy等.本文所讨论的是正向代理. HTTP代理最常见的用途是用于网络共享.网络加速和网络限制突破等.此外,HTTP代理也常用于Web应用调试.Android/IOS APP 中所调用的Web API监控和分析,目前的知名软件有Fiddler.Charles.Burp Suite和mi

内网中设置华为代理路由

一.内部的局域网都使用网络上的私有地址,在常规情况下,内部的电脑在直接利用路由对外访问时,会因电脑使用的是互联网上的保留地址,而被路由器过 滤掉,从而导致无法访问互联网资源,解决这一问题的办法是利用路由操作系统提供的NAT地址转换功能,将内部网的私有地址转换成互联网上的合法地址,使得 不具有合法IP地址的用户可以通过NAT访问到外部网络.这样做的好处是无需配备代理服务器,减少投资,还可以节约合法IP地址,并提高了内部网络的安全 性. 二.使用NAT的single模式,就像它的名字一样,可以将众多

如何在word中设置不连续的页码?

有些word封面不需要页码,目录需要一个从第一页开始的页码,正文需要一个从第一页开始的页码.如果在页眉页脚插入页码,会得到连续的页码编号,这样不符合我们的要求. 那么如何在word中设置不连续的页码呢?举个例子:某word文档,前两页是目录,从第三页起是正文. 大体的思路是:想办法把目录和正文分成两个独立的部分,然后给目录设置一个页码,给正文设置一个页码就可以了. 操作方法是: 1.首先,将光标移至第二页的最后,点击插入分隔符分节符类型中选择下一页,然后点击视图打开页眉与页脚工具条; 2.将光标

华硕笔记本预装win8改win7如何在bios中设置

  华硕笔记本预装win8改win7如何在bios中设置         开机按F2键,进入bios 切换到Security标签,找到Secure BOOT Control,将Enabled改为Disabled,这一步的作用是关闭微软的Secure BOOT,这个功能开启会导致不能识别U盘启动系统的安装 切换到BOOT标签,将Launch CSM改为Enabled(如果是灰色不可以选择,先按F10保存退出再次进入就可以选择了),这个选项的作用就是,将UEFI的BIOS改为传统BIOS 最后按 F

联想G410(预装windows8.1) 如何在bios中设置从U盘启动安装Ubuntu14.10?

问题描述 联想G410(预装windows8.1) 如何在bios中设置从U盘启动安装Ubuntu14.10? 我已经将U盘制作成了安装盘,如图 然后重启电脑,按fn+f2进入了bios设置界面, 如何设置从U盘启动呢? 解决方案 看不到图片啊,你重新发一下图吧 解决方案二: 看不到图片啊,你重新发一下图吧 解决方案三: 首先把boot mode由uefi修改为传统或者bios. 然后下面设置启动顺序,如果没有,开机按住f8或者f12,然后会有启动设备列表的菜单,选择U盘. 解决方案四: bio

ios-如何在cell中设置cell不能点击(不是在TableView中在设置)

问题描述 如何在cell中设置cell不能点击(不是在TableView中在设置) 如何在cell中设置cell不能点击(不是在TableView中在设置) 解决方案 将cell的交互关掉 解决方案二: cell.userInteractionEnabled = No; 解决方案三: cell.selectionStyle = UITableViewCellSelectionStyleNone; 是没有选中效果,还是可以点击的 解决方案四: 将cell的交互关掉 将cell的交互关掉 将cell