Linux代理服务器和防火墙配置详细解析

42、深入解析Linux网络管理:从基础配置到高级应用 本文深入解析了Linux系统下的网络管理技术,涵盖从基础的IP地址与路由设置到高级的代理配置和命令行操作。详细介绍了如何使用NetworkManager和nmtui进行网络配置,理解关键网络配置文件如ifcfg-*、resolv.conf和nsswitch.conf的作用,并提供了常见网络问题如连接失败、DNS解析错误和代理配置问题的解决方案。通过实际示例和流程图,帮助读者掌握灵活且高效的Linux网络管理方法,适用于企业级服务器与桌面系统的网络运维需求。 阅读详情

1.iptables规则表

Filter(针对过滤系统):INPUT、FORWARD、OUTPUT

NAT(针对地址转换系统):PREROUTING、POSTROUTING、INPUT、OUTPUT

Mangle(针对策略路由和特殊应用):OUTPUT、POSTROUTING

 

2.安装包

iptables-1.2.7a-2

 

3.配置防火墙

1) 命令语法

Usge: iptables [-t table] -[ADC] chain rule-specification [options]

iptables [-t table] -I chain [rulenum] rule-specification [options]

iptables [-t table] -R chain rulenum rule-specification [options]

iptables [-t table] -D chain rulenum [options]

iptables [-t table] -[LFZ] [chain] [options]

iptables [-t table] -N chain

iptables [-t table] -X [chain]

iptables [-t table] -P chain target [options]

iptables [-t table] -E old-chain-name new-chain-name

规则操作参数说明:

-A:在所选择的链末添加一条或更多规则;

 

-D:从所选链中删除一条或更多规则。有两种方法:把被删除规则指定为链中的序号(第一条序号为1),或者指定为要匹配的规则;

 

-R:从选中的链中取代一条规则。如果源 地址 或目的地址转换为多地址,该命令会失败。规则序号从1开始;

 

-I:根据给出的规则序号,向所选链中插入一条或更多规则。所以,如果规则序号为1,规则会插入链的头部。这也是不指定规则序号时的默认方式;

 

-L:现实所选链的所有规则。如果没有所选链,将显示所有链。也可以和z选项一起用,这是链会自动列出和归零;

 

-F:清空所选链。这等于把所有规则一个个删除;

 

-Z:把所有链的包以及字节的计数器清空;

 

-N:根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在;

 

-X:删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前必须删除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非内建的链;

 

-P:设置链的目标规则;

 

-E:根据用户给出的名字对指定链进行重名名;

 

规则定义参数说明:

-p [!]protocol:

规则或者包检查(待查包)的协议。指定协议可以是TCP、UDP、ICMP中的一个或者全部,也可以是数值,代表这些协议中的某一个。当然也可以使用在/etc/protocols中定义的协议名。在协议名前加上"!"表示相反的规则。数字0相当于所有all。Protocol all会匹配所有协议,而且这是缺省时的选项。在和check命令结合时,all可以不被使用;

 

-s[!]address[/mask]:

指定源地址,可以是主机名、 网络 名和清楚地IP地址。mask说明可以是网络掩码或清楚的数字,在网络掩码的左边指定网络掩码左边"1"的个数,因此,mask值为24等于255.255.255.0。在指定地址前加上"!"说明指定了相反的地址段。 标志 --src是这个选项的简写;

 

-d[!]address[/mask]:

指定目标地址,要获取详细说明请参见-s标志的说明。标志--dst是这个选项的简写;

 

-j target:

指定规则的目标:也就是说包匹配应当做什么。目标可以为ACCEPT(通过)、DROP(删除)、RETURN(返回)、REDIRECT(重新指向)、SNAT(源地址转换)、DNAT(目标地址转换)、MASQUERADE(伪装)等,还可以是用户自定义链。如果规则的这个选项被忽略,那么匹配的过程不会对包产生影响,不过规则的计数器会增加;

 

-i[!][name]:

待选的可接受包接口名称,包通过该接口接收(在链INPUT、FORWORD和PREROUTING中进入的包)。当在接口名前使用"!"说明后,指的是相反的名称,如果接口名后面加上"+",则所有以次接口名开头的接口都会被匹配。如果这个选项被忽略,会假设为"+",那么将匹配任意接口;

 

-O[!][NAME]:

这是包经由该接口送出的可选的 出口 名称,包通过该口输出(在链FORWARD、OUTPUT和POSTROUTING中送出的包)。其他设置同上。

 

2) 匹配规则扩展选项:

tcp:当指定-p tcp,且未指定其他匹配的扩展,则装载这些扩展。

--source-port[!][port[:port]]:

源端口或端口范围指定。可以是服务名或端口号。使用格式端口:端口也可以指定包含的(端口)范围。如果忽略首端口号,默认是0,如果忽略末端口号,默认是65535,如果第二个端口号大于第一个,则他们进行交换。这个选项可以使用--sport的别名;

--destionation-port[!][port:[port]]:

目标端口或端口范围指定。这个选项可以使用--dport别名来代替;

 

--tcp-flags[!]mask comp:

匹配指定的TCP标记。第一个参数是要检查的标记,一个用逗号分开的列表,第二个参数是用逗号分开的标记表,是必须设置的。标记如:SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)、PSH(送入)ALLNONE。

命令iptables -A FORWARD -p tcp --tcp-flags SYN, ACK, FIN, RST SYN只匹配那些设置了SYN标记而没有设置ACK、FIN和RST标记的包。

 

udp:当指定-p icmp且未指定其他匹配的扩展时,则装载这些扩展。

--icmp-type[!]typename:这个选项允许指定ICMP类型,可以是一个数值型的ICMP类型,或者是某个由命令"iptables -p icmp -h"所显示的ICMP类型名。

 

mac:

--mac-source[!]address:匹配物理地址。必须是XX:XX:XX:XX:XX这样的格式。注意,他只对来自以太设备并进入PREROUTING、FORWORD和INPUT链的包有效。

 

limit:这个模块匹配标志用来对网络数据的通过速率进行标记,他和LOG目标结合使用,给出有限的登陆数。当达到这个极限值时,使用这个扩展包的规则将进行匹配。(除非使用了!标记),他的扩展选项包括:

--limit rate:最大平均匹配速率,可赋的值有"/second"、"/minute"、"/hour"或"/day"这样的单位,默认是"3/hour";

--limit-burst number:待匹配包初始个数的最大值。若前面指定的极限还没达到这个数值,则该数字加1。默认值是5。

 

multiport:这个模块匹配一组源端口或目标端口,最多可以指定15个端口。只能和-p tcp或者-p udp连着使用:

--source-port[port[,port]]:如果源端口是其中一个给定端口,则匹配;

--destination-port[port[,port]]:如果目标端口是其中一个给定端口,则匹配;

--port[port[,port]]:若源端口和目的端口相等并与某个给定端口相等,则匹配。

 

owner:此扩展为本地生成包匹配包的创建者,只能用于OUTPUT链,而且,有一些包(如ICMP ping应答)还可能没有所有者,因此 永远 不会匹配:

--uid-owner userid:如果给出有效的user id,那么匹配他的进程产生的包;

--gid-owner groupid:如果给出有效的group id,那么匹配它的进程产生的包;

--sid-owner sessionid:根据给出的会话组成匹配该进程产生的包。

 

REJECT:作为对匹配的包的相应,返回一个错误的包,其他情况下和DROP相同。此目标只适用于INPUT、FORWARD和OUTPUT链,以及调用这些链的用户自定义链。这几个选项控制返回的错误包的特性:

--reject-with type:其中的type可以是icmp-net-unreachable、icmp-host-unreachable、icmp-port-unreachable、icmp-porto-unreachable、icmp-net-prohibited或者icmp-host-prohibited,该类型会返回相应的ICMP错误信息(默认是port-unreachable)。选项echo-reply也是允许的;它只能用于指定ICMP ping包的规则中,生成ping的回应。

 

SNAT:这个目标只适用于nat表的POSTROUTING链。它规定修改包的源地址(此连接以后所有的包都会被影响),停止对规则的检查:

--to-source [ ][:port-port]:

可以指定一个单一的新IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp或者-p udp的规则里)。如果未指定端口范围,源端口是512以下的端口惠被安排为其他的512以下的端口;512到1024之间的端口会被安排为1024以下的,其他端口会被安排为1024或以上。如果可能,端口不会被修改;

--to-destiontion [ ][:port-port]:

可以指定一个单一的新的IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp或者-p udp的规则里)。如果未指定端口范围,目标端口不会被修改。

 

MASQUERADE:只用于nat表的POSTROUTING链。只能用于动态获取ip(拨号)连接:如果拥有静态IP地址,要用SNAT。伪装相当于给包发出时所经过接口的IP地址设置一个映像,当借口关闭时,连接会终止。这是因为,当下一次拨号时,未必是相同的接口地址(以后所有建立的连接都将关闭)。他有一个选项:

--to-ports [ ]:指定使用的源端口范围,覆盖默认的SNAT源地址选择。这个选项只适用于指定了-p tcp或者-p udp的规则。

 

REDIRECT:只适用于nat表的PREROUTING和OUTPUT链,以及只调用他们的用户定义链。他修改包的目标IP地址来发送包到机器自身(本地生成的包被安置为地址127.0.0.1),包含一个选项:

--to-ports [ ]:指定使用的目的端口或端口范围:不指定的话,目标端口不会被修改。只能用于指定了-p tcp或者-p udp的规则。

 

举例:

假如有这样一个局域网,内部IP地址范围192.168.1.1-254,网关地址为192.168.1.1,绑定在eth0接口上,同时,网关具有外部Internet地址为10.25.0.7,绑定在eth1接口上,防火墙就位于网关上,

name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1572879403720716&dt=1184540709640&hl=zh-CN&lmt=1183173655&alternate_ad_url=http%3A%2F%2Fwww.qqread.com%2F0000js%2Fgoogle336.htm&prev_fmts=336x280_as&format=300x250_as&output=html&correlator=1184540709609&channel=6686853775&pv_ch=6686853775%2B&url=http%3A%2F%2Fwww.qqread.com%2Fnetwork%2Fserver%2Fy314535_2.html&color_bg=EFF5FF&color_text=323232&color_link=6183BA&color_url=888888&color_border=EFF5FF&ad_type=text_image&ref=http%3A%2F%2Fwww.qqread.com%2Fnetwork%2Fserver%2Fy314535.html&cc=100&flash=9&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_his=3&u_java=true" frameborder="0" width="300" scrolling="no" height="250" allowtransparency="allowtransparency">
通过它的设置,对流经防火墙的网络包进行过滤处理。同时,在局域网内部有一台WWW服务器,他的内部地址为192.168.1.2,他被设置为可以接受外部的网络用户访问。

首先清空所有的规则链,并设置规则链的默认策略为DROP,即丢弃所有的网络数据包。

iptables -F

iptables -P INPUT DROP

iptables -P OUTPUT DROP

iptables -P FORWARD DROP

 

新增用户者自定义规则链bad_tcp_packets、allowed和icmp_packets。

iptables -N bad_tcp_packets

iptables -N allowed

iptables -N icmp_packets

 

下面定义bad_tcp_packets规则链的规则:将要求重导向的网络连接记录起来,然后将报文丢弃(防止本地机器被其他主机作为入侵跳板,侵入别的主机):

iptables -A bad_tcp_packets -p TCP ! --syn -m state --state NEW -j LOG --log-level INFO --log-prefix "New not syn:"

iptables -A bad_tcp_packets -p TCP ! --syn -m state --state NEW -j DROP

 

下面定义allowed规则链的规则:允许要求连接的网络数据包或相应包进入,将其与网络数据包丢弃:

iptables -A allowed -p TCP --syn -j ACCEPT

iptables -A allwoed -p TCP -m state --state ESTABLLSHED,RELATED -J ACCEPT

IPTABLES -A allowed -p TCP -j DROP

 

下面定义icmp_packets规则链的规则:允许ping网络数据包进入,将其余的网络数据包丢弃:

iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT

iptables -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT

 

INPUT链,过滤要到达防火墙的网络数据包。

进入防火墙主机的TCP网络数据包必须先进行bad_tcp_packets过滤:

iptables -A INPUT -p TCP -j bad_tcp_packets

 

从WAN进入防火墙主机的ICMP网络数据包,必须先进行icmp_packets过滤,这是为了避免黑客传送不完整的IP网络数据包,系统会相应ICMP网络数据包,以通知对方,导致主机位置被侦测出来:

iptables -A INPUT -p ICMP -i eth1 -j icmp_packets

 

从LAN进入防火墙主机的全部单播和广播的网络数据包,均会放行:

iptables -A INPUT -p ALL -i eth0 -d 192.168.1.1 -j ACCEPT

iptables -A INPUT -p ALL -i eth0 -d 192.168.1.255 -j ACCEPT

 

从LAN进入防火墙主机的DHCP网络数据包,予以放行,只有当防火墙担任DHCP时才使用:

iptables -A INPUT -p UDP -i eth0 --dport 67 --sport 68 -j ACCEPT

 

从WAN进入防火墙主机的所有网络数据包,检查是否为响应网络数据包,若是则予以放行:

iptables -A INPUT -p ALL -d 10.25.0.7 -m state --state ESTABLISHED,RELATED -j ACCEPT

 

限制过滤规则的检测频率为每分钟平均流量三个网络数据包(超过)上限的网络数据包将暂停检测,并将瞬间流量设定为一次最多处理三个网络数据包(超过上限的网络数据包将丢弃不予处理),这类网络数据包通常是黑客用来进行拒绝服务攻击:

iptables -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level INFO --log-prefix "IPT INPUT packet died:"

 

FORWAD链,过滤要通过防火墙的网络数据包

通过防火墙的TCP网络数据包必须先进行bad_tcp_pcakets过滤:

iptables -A FORWAD -P TCP -J bad_tcp_packets

 

从LAN要到WAN的网络数据包均放行:

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

 

从WAN到LAN的网络数据包仅放行应答网络数据包:

iptables -A FORWARD -i eth1 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

 

允许来自WAN的PING网络数据包,递送到局域网内的WWW服务器:

iptables -A FORWARD -p ICMP -i eth1 -o eth0 -d 192.168.1.2 -j icmp_packets

 

允许来自WAN的HTTP,HTTPS网络数据包,递送到局域网的WEB服务器:

iptables -A FORWARD -p TCP -i eth1 -o eth0 -d 192.168.1.2 -m multiport --dport 80,443 -j allowed

 

限制过滤规则的检测频率为每分钟平均流量3各网络数据包(超过上限的网络数据包将暂停检测),并将瞬间流量设定为一次最多处理3个数据包(超过上限的网络数据包将被丢弃不予处理),这类网络数据包通常是黑客用来进行拒绝服务攻击:

iptables -A FORWARD -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT FORWARD packet died:"

 

OUTPUT链,过滤从防火墙送出的网络数据包。

从防火墙送出的TCP网络数据包必须先进行bad_tcp_packets过滤:

iptables -A OUTPUT -p TCP -j bad_tcp_packets

 

对于过滤通过的TCP包和其他类型的包,均会放行:

iptables -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT

iptables -A OUTPUT -p ALL -s 192.168.1.1 -j ACCEPT

iptables -A OUTPUT -p ALL -s 10.25.0.7 -j ACCEPT

 

限制过滤规则的检测频率为每分钟平均流量3各网络数据包(超过上限的网络数据包将暂停检测),并将瞬间流量设定为一次最多处理3个数据包(超过上限的网络数据包将被丢弃不予处理),这类网络数据包通常是黑客用来进行拒绝服务攻击:

iptables -A OUTPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level DEBUG --log-prefix "IPT OUTPUT packet died:"

 

4.NAT配置

1) 目的NAT(DNAT)

DNAT在外部数据包进入防火墙后且路由之前进行,他把该数据包的目的地址改为内部局域网的地址,然后路由该数据包进入到局域网内部主机。

举例:

iptables -t nat -A PREROUTING -t tcp -d 10.25.0.7 --dport 80 -i eth1 -j DNAT --to 192.168.1.2:80

说明:可以路由到达防火墙的访问80端口(即WWW服务器)的数据包的目的地址改为192.168.1.2。

 

2) 源NAT(SNAT)

SNAT主要用来更改从防火墙发出的数据包的源地址,使得来自局域网的私有地址通过防火墙后,更改为防火墙具有的外部地址,以便数据接收方接收数据后,能够找到正确的回复地址。

举例:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to10.25.0.7

说明:更改所有来自192.168.1.0/24的数据包的源IP地址为10.25.0.7

 

注意:系统在经过路由及过滤等处理后,直到数据包要送出时,才进行SNAT,有一种SANT的特殊情况是IP伪装,通常建议在用拨号上网时使用,也就是在合法IP地址不固定的情况下使用。

举例:

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

说明:这样可以保证局域网内部的用户能够所有通过拨号服务器连接到INTERNET。

 

5.缓存代理squid

1) 安装包

squid-2.5.STABLE1-2

 

2) 主要配置文件

/etc/squid/squid.conf

http_port:指定了squid监听客户请求的端口,默认值是3128。  
 
 
  
要使用代理,建议这个端口值和运行squid的机器ip地址一起使用;

举例:http_port 192.168.0.2:3128

说明:squid绑定在ip地址192.168.0.2上,端口为3128。


cache_mgr:当代理页面发生错误时,代理服务器将向这个配置项登记的用户发送邮件消息,将它配置为管理员的实际邮件地址;

举例:cache_mgr shuke@shuke.com

说明:当代理页面发生错误,给shuke@shuke.com发送消息。


http_access:允许HTTP访问,这个是主要的访问控制列表。默认拒绝所有的访问。

举例:http_access allow all

说明:接受所有访问。


cache_dir:定义磁盘缓存空间,以存储访问过的页面或其他资源的拷贝。

格式:cache_dir Type Directory-Name Fs-specific-data [options]

说明:

Type:存储类型,一般设置为ufs;

Directory-Name:代表缓存的位置,默认的设置是cache_dir ufs /var/spool/squid 100 16 256,其中,100代表缓存空间最大为100M;16到256代表缓存目录下的一级和二级目录数目。


启动命令:/etc/rc.d/init.d/squid start


客户端需要进行的设置:

IE浏览器选项-局域网设置-选中代理服务器和对本地地址不使用代理服务器,填写代理的IP地址和端口号。


3) squid.conf的13个配置选项:

NETWORK OPTIONS (有关的网络选项) :

OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM (作用于邻居选择算法的有关选项) :

OPTIONS WHICH AFFECT THE CACHE SIZE (定义cache大小的有关选项):

LOGFILE PATHNAMES AND CACHE DIRECTORIES (定义日志文件的路径及cache的目录)

OPTIONS FOR EXTERNAL SUPPORT PROGRAMS (外部支持程序选项)

OPTIONS FOR TUNING THE CACHE (调整cache的选项)

TIMEOUTS (超时)

ACCESS CONTROLS (访问控制)

ADMINISTRATIVE PARAMETERS (管理参数)

OPTIONS FOR THE CACHE REGISTRATION SERVICE (cache注册服务选项)

HTTPD-ACCELERATOR OPTIONS (HTTPD加速选项)

MISCELLANEOUS (杂项)

DELAY POOL PARAMETERS (延时池参数)


网络选项:

tcp_incoming_address指定监听来自客户或其他squid代理服务器的绑定ip地址;

tcp_outgoing_address指定向远程服务器或其他squid代理服务器发起连接的ip地址

udp_incoming_address为ICP套接字指定接收来自其他squid代理服务器的包的ip地址 udp_outgoing_address为ICP套接字指定向其他squid代理服务器发送包的ip地址;

缺省为没有绑定任何ip地址。该绑定地址可以用ip指定,也可以用完整的域名指定。


交换空间设定选项:

cache_swap_low (percent, 0-100)

cache_swap_high (percent, 0-100)

说明:squid使用大量的交换空间来存储对象。那么,过了一定的时间以后,该交换空间就会用完,所以还必须定期的按照某种指标来将低于某个水平线的对象清除。squid使用所谓的“最近最少使用算法”(LRU)来做这一工作。当已使用的交换空间达到cache_swap_high时,squid就根据LRU所计算的得到每个对象的值将低于某个水平线的对象清除。这种清除工作一直进行直到已用空间达到cache_swap_low。这两个值用百分比表示,如果你所使用的交换空间很大的话,建议你减少这两个值得差距,因为这时一个百分点就可能是几百兆空间,这势必影响squid的性能。缺省为:

cache_swap_low 90

cache_swap_high 95


maximum_object_size

说明:大于该值得对象将不被存储。如果你想要提高访问速度,就请降低该值;如果你想最大限度地节约带宽,降低成本,请增加该值。单位为K,缺省值为:

maximum_object_size 4096 KB


有关日志的选项:

cache_access_log:

说明:指定客户请求记录日志的完整路径(包括文件的名称及所在的目录),该请求可以是来自一般用户的HTTP请求或来自邻居的ICP请求。缺省值为:cache_access_log /var/log/squid/access.log,如果你不需要该日志,可以用以下语句取消:cache_access_log none;


cache_store_log

说明:指定对象存储记录日志的完整路径(包括文件的名称及所在的目录)。该记录表明哪些对象被写到交换空间,哪些对象被从交换空间清除。缺省路径为:cache_log /var/log/squid/cache.log,如果你不需要该日志,可以用以下语句取消:cache_store_log none;


cache_log:

说明:指定squid一般信息日志的完整路径(包括文件的名称及所在的目录)。缺省路径为:cache_log /var/log/squid/cache.log;


cache_swap_log:

说明:该选项指明每个交换空间的“swap.log”日志的完整路径(包括文件的名称及所在的目录)。该日志文件包含了存储在交换空间里的对象的元数据(metadata)。通常,系统将该文件自动保存在第一个“cache_dir”说定义的顶级目录里,但是你也可以指定其他的路径。如果你定义了多个“cache_dir”,则相应的日志文件可能是这样的:

cache_swap_log.00

cache_swap_log.01

cache_swap_log.02

后面的数字扩展名与指定的多个“cache_dir”一一对应。需要注意的是,最好不要删除这类日志文件,否则squid将不能正常工作;


pid_filename:

说明:指定记录squid进程号的日志的完整路径(包括文件的名称及所在的目录)。缺省路径为

pid_filename /var/run/squid.pid,如果你不需要该文件,可以用以下语句取消:pid_filename none;


debug_options:

说明:控制作日志时记录信息的多寡。可以从两个方面控制:section控制从几个方面作记录;level控制每个方面的记录的详细程度。推荐的方式(也是缺省方式)是:debug_options ALL,1,即,对每个方面都作记录,但详细程度为1(最低);


log_fqdn on|off:

说明:控制在 access.log 中对用户地址的记录方式。打开该选项时,squid记录客户的完整域名,取消该选项时,squid记录客户的ip地址。注意,如果打开该选项会增加系统的负担,因为squid还得进行客户ip的DNS查询。缺省值为:log_fqdn off。
有关外部支持程序的选项:

ftp_user:

说明:设置登录匿名ftp服务器时的提供的电子邮件地址,登录匿名ftp服务器时要求用你的电子邮件地址作为登录口令(更多的信息请参看本书的相关章节)。

name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1572879403720716&dt=1184540837296&hl=zh-CN&lmt=1183173655&alternate_ad_url=http%3A%2F%2Fwww.qqread.com%2F0000js%2Fgoogle336.htm&prev_fmts=336x280_as&format=300x250_as&output=html&correlator=1184540837265&channel=6686853775&pv_ch=6686853775%2B&url=http%3A%2F%2Fwww.qqread.com%2Fnetwork%2Fserver%2Fy314535_4.html&color_bg=EFF5FF&color_text=323232&color_link=6183BA&color_url=888888&color_border=EFF5FF&ad_type=text_image&ref=http%3A%2F%2Fwww.qqread.com%2Fnetwork%2Fserver%2Fy314535_3.html&cc=100&flash=9&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_his=5&u_java=true" frameborder="0" width="300" scrolling="no" height="250" allowtransparency="allowtransparency">
需要注意的是,有的匿名ftp服务器对这一点要求很苛刻,有的甚至会检查你的电子邮件的有效性。缺省值为:ftp_user Squid@;

 

ftp_list_width:

说明:设置ftp列表的宽度,如果设得太小将不能的浏览到长文件名。缺省值为:ftp_list_width 32;

 

cache_dns_program:

说明:指定DNS查询程序的完整路径(包括文件的名称及所在的目录)。缺省路径为:cache_dns_program /usr/lib/squid/dnsserver;

dns_children:

说明:设置DNS查询程序的进程数。对于大型的登录服务器系统,建议该值至少为10。最大值可以是32,缺省设置为5个。注意,如果你任意的降低该值,可能会使系统性能急剧降低,因为squid主进程要等待域名查询的结果。没有必要减少该值,因为DNS查询进程并不会消耗太多的系统的资源;

 

dns_nameservers:

说明:指定一个DNS服务器列表,强制squid使用该列表中的DNS服务器而非使用/etc/resolv.conf文件中定义的DNS服务器。你可以这样指定多个DNS服务器:dns_nameservers 10.0.0.1 192.172.0.4

缺省设置为:dns_nameservers none;

 

unlinkd_program:

说明:指定文件删除进程的完整路径。缺省设置为:unlinkd_program /usr/lib/squid/unlinkd;

 

pinger_program:

说明:指定ping进程的完整路径。该进程被squid利用来测量与其他邻居的路由距离。该选项只在你启用了该功能时有用。缺省为:pinger_program /usr/lib/squid/pinger;

 

authenticate_program:

说明:指定用来进行用户认证的外部程序的完整路径。squid的用户认证功能我们将在后面的章节讲述。缺省设置为不认证。

 

用户访问控制选项:

acl:

说明:定义访问控制列表。

定义语法为:

acl aclname acltype string1 ...

acl aclname acltype "file" ...

当使用文件时,该文件的格式为每行包含一个条目。

acltype 可以是 src dst srcdomain dstdomain url_pattern urlpath_pattern time port proto method browser user 中的一种。

 

分别说明如下:

src 指明源地址。可以用以下的方法指定:

acl aclname src ip-address/netmask ... (客户ip地址)

acl aclname src addr1-addr2/netmask ... (地址范围)

 

dst 指明目标地址。语法为:

acl aclname dst ip-address/netmask ... (即客户请求的服务器的ip地址)

 

srcdomain 指明客户所属的域。语法为:

acl aclname srcdomain foo.com ... squid将根据客户ip反向查询DNS。

 

dstdomain 指明请求服务器所属的域。语法为:

acl aclname dstdomain foo.com ... 由客户请求的URL决定。

注意,如果用户使用服务器ip而非完整的域名时,squid将进行反向的DNS解析来确 定其完整域名,如果失败就记录为“none”。

 

time 指明访问时间。语法如下:

acl aclname time [day-abbrevs] [h1:m1-h2][hh:mm-hh]

day-abbrevs:

S - Sunday

M - Monday

T - Tuesday

W - Wednesday

H - Thursday

F - Friday

A - Saturday

h1:m1 必须小于 h2:m2,表达示为[hh:mm-hh]。

 

port 指定访问端口。可以指定多个端口,比如:

acl aclname port 80 70 21 ...

acl aclname port 0-1024 ... (指定一个端口范围)

 

proto 指定使用协议。可以指定多个协议:

acl aclname proto HTTP FTP ...

 

method 指定请求方法。比如:

acl aclname method GET POST ...

 

各类超时设置选项:

negative_ttl time-units:

说明:设置消极存储对象的生存时间。所谓的消极存储对象,就是诸如“连接失败”及"404 Not Found"等一类错误信息。缺省设置为5分钟;

举例:negative_ttl 5 minutes

 

positive_dns_ttl time-units:

说明:设置缓存成功的DNS查询结果的生存时间。缺省为6小时;

举例:positive_dns_ttl 6 hours

 

negative_dns_ttl time-units:

说明:设置缓存失败的DNS查询结果的生存时间。缺省为5分钟;

举例:negative_dns_ttl 5 minutes

 

connect_timeout time-units:

说明:设置squid等待连接完成的超时值。缺省值为2分钟;

举例:connect_timeout 120 seconds

 

read_timeout time-units:

说明:如果在指定的时间内squid尚未从被请求的服务器读入任何数据,则squid将终止该客户请求。缺省值为15分钟;

举例:read_timeout 15 minutes

 

request_timeout:

说明:设置在建立与客户的连接后,squid将花多长时间等待客户发出HTTP请求。缺省值为30秒。

举例:request_timeout 30 seconds;

 

client_lifetime time-units:

说明:设置客户在与squid建立连接后,可以将该连接保持多长时间;

注意,因为客户建立的每个连接都会消耗一定的系统资源,所以如果你是为一个大型网络提供代理服务的话,一定要正确地修改该值。因为如果同一时间的连接数量太大的话,可能会消耗大量的系统资源,从而导致服务器宕机。缺省值为1天,该值太大了,建议根据你自己的情况适当减小该值。

举例:client_lifetime 1 day

 

half_closed_clients on/off:

说明:有时候由于用户的不正常操作,可能会使与squid的TCP连接处于半关闭状态,这时候,该TCP连接的发送端已经关闭,而接收端正常工作。缺省地,squid将一直保持这种处于半关闭状态的TCP连接,直到返回套接字的读写错误才将其关闭。如果将该值设为off,则一旦从客户端返回“no more data to read”的信息,squid就立即关闭该连接;

举例:half_closed_clients on

 

pconn_timeout:

说明:设置squid在与其他服务器和代理建立连接后,该连接闲置多长时间后被关闭。缺省值为120秒;

举例:pconn_timeout 120 seconds

 

ident_timeout:

说明:设置squid等待用户认证请求的时间。缺省值为10秒;

举例:ident_timeout 10 seconds

 

shutdown_lifetime time-units:

说明:当收到SIGTERM 或者 SIGHUP 信号后, squid将进入一种shutdown pending的模式,等待所有活动的套接字关闭。在过了shutdown_lifetime所定义的时间后,所有活动的用户都将收到一个超时信息。缺省值为30秒;

举例:shutdown_lifetime 30 seconds

 

管理参数选项:

cache_mgr:

说明:设置管理员邮件地址。缺省为管理员;

举例:cache_mgr root

 

cache_effective_user / cache_effective_group:

说明:如果用root启动squid,squid将变成这两条语句指定的用户和用户组。缺省变为squid用户和squid用户组。注意这里指定的用户和用户组必须真是存在于/etc/passwd中。如果用非root帐号启动squid,则squid将保持改用户及用户组运行,这时候,你不能指定小于1024地http_port;

举例:

cache_effective_user squid

cache_effective_group squid

 

visible_hostname:

说明:定义在返回给用户的出错信息中的主机名;

举例:visible_hostname www-cache.foo.org

 

unique_hostname:

说明:如果你有一个代理服务器阵列,并且你为每个代理服务器指定了同样的“visible_hostname”,同时你必须为它们指定不同的“unique_hostname”来避免“forwarding loops ”(传输循环)发生。

其它杂项:

1. dns_testnames

说明:设置进行DNS查询测试,如果第一个站点解析成功则立即结束DNS查询测试。

name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-1572879403720716&dt=1184540879593&hl=zh-CN&lmt=1183173655&alternate_ad_url=http%3A%2F%2Fwww.qqread.com%2F0000js%2Fgoogle336.htm&prev_fmts=336x280_as&format=300x250_as&output=html&correlator=1184540879562&channel=6686853775&pv_ch=6686853775%2B&url=http%3A%2F%2Fwww.qqread.com%2Fnetwork%2Fserver%2Fy314535_5.html&color_bg=EFF5FF&color_text=323232&color_link=6183BA&color_url=888888&color_border=EFF5FF&ad_type=text_image&ref=http%3A%2F%2Fwww.qqread.com%2Fnetwork%2Fserver%2Fy314535_4.html&cc=100&flash=9&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_his=6&u_java=true" frameborder="0" width="300" scrolling="no" height="250" allowtransparency="allowtransparency">
如果你不愿意进行DNS查询测试,就不要去掉缺省的设置;

举例:#dns_testnames netscape.com internic.net nlanr.net microsoft.com

 

logfile_rotate:

说明:通常,squid会定期的将日志文件更名并打包。比如正在使用的日志文件为access.log,squid会将其更名并打包为access.log.1.gz;过了一定时间后,squid又会将access.log.1.gz更名为access.log.2.gz并将当前的日志文件更名并打包为access.log.1.gz,以此循环。logfile_rotate所指定的数字即为打包并备份的文件的数量,当达到这一数目时,squid将删除最老的备份文件。缺省值为10。如果你想手动来进行这些操作,你可以用logfile_rotate 0来取消自动操作;

 

err_html_text:

说明:用该语句定义一个字符串变量,可以用%L在返回给用户的错误信息文件中引用。错误信息文件通常在/etc/squid/errors目录中,这是一些用HTML写成的脚本文件,你可以自己修改它;

 

deny_info:

说明:你可以定制自定义的拒绝访问信息文件,并且可以和不同的用户列表相关联。当用户被http_access相关规则拒绝时,squid可以向用户显示你自定义的相应的拒绝访问信息文件;

举例:

Usage: deny_info err_page_name acl

比如:

deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys

 

memory_pools on|off:

说明:如果你将该项设为on,则squid将保留所有已经分配(但是未使用)的内存池以便在将来使用。缺省为on;

举例:memory_pools on

 

log_icp_queries on|off:

说明:设置是否对ICP请求作日志。如果你的系统负载很大,你可以用off来取消该功能;

举例:log_icp_queries on

 

always_direct:

说明:该选项允许你指定某些用户类,squid将这些用户类的请求直接转发给被请求的服务器;

举例:

always_direct allow|deny [!]aclname ...

如:直接转发FTP请求可以这样设置:

acl FTP proto FTP

always_direct allow FTP

 

never_direct

说明:与always_direct相反;

举例:

Usage: never_direct allow|deny [!]aclname ...

比如,为了强制除了本地域的其他用户使用代理服务器,你可以这样设置:

acl local-servers dstdomain foo.net

acl all src 0.0.0.0/0.0.0.0

never_direct deny local-servers

never_direct allow all

 

icon_directory:

说明:指明向用户传送错误信息时所用到的图标文件的目录;

举例:icon_directory /usr/lib/squid/icons

 

error_directory:

说明:指明向用户传送错误信息所用到的错误描述文件的目录。

举例:error_directory /etc/squid/errors

 

5.透明代理的设置

编辑/etc/squid/squid.conf,修改参数如下:

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

运行/etc/rc.d/init.d/squid reload使设置生效,然后,使用iptables工具添加两条端口转向和网络地址转换规则:

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

这条命令将把所有局域网用户通过Linux接入服务器访问WWW服务的访问请求,重定向到工作在3128端口的squid处理;

 

iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 166.32.129.10

这条命令是把所有来自192.168.1.0网段,并且将要从eth0网络接口(即internet连接)发出的数据包的源地址,更改为这个代理服务器所设置的外部IP地址166.32.129.10。

设置完毕,在局域网内的用户,将计算机的网关更改为192.168.1.2,则可以获得透明代理的服务了。

Linux防火墙和透明代理服务器在校园网的应用.pdf 立即下载

相关推荐

Globus数据下载全攻略:从零配置到批量下载大文件(附常见问题解决)

本文详细介绍了Globus数据下载的全流程,从零配置到批量下载大文件的实用技巧,包括环境准备、高级传输策略、性能优化及常见问题解决方案。Globus作为科研数据的高效传输工具,通过并行流传输和自动校验技术,显著提升大规模数据传输的效率和可靠性。

u9v0w的博客 663

squid配置解析-超时时间

因为缺省的配置文件有问题,所以我们必须首先修改该配置文件的有关内容,以便让squid跑起来 http://www.jb51.net/LINUXjishu/45296.html 4.1常用的配置选项  因为缺省的配置文件有问题,所以我们必须首先修改该配置文件的有关内容,以便让squid跑起来。  下面我们来看一看squid.conf文件的结构以及一些常用的选项:

武溪嵌人 7570

Cursor3.0新界面使用说明

本文摘要:Cursor 3.x版本更新后,提供了两套主界面:Editor(类似VSCode的代码编辑器)和AgentsWindow(以AI智能体为中心的新界面)。Editor适合日常编码,AgentsWindow则支持并行运行多个AI任务、云端协作和多仓库管理。通过Ctrl+E可快速切换布局。文章详细介绍了AI聊天面板的操作技巧、四种工作模式(Agent/Plan/Ask/Debug)的区别,以及AgentsWindow的多任务管理功能。同时提供了Windows快捷键速查、中文化设置方法,并对比了新旧版本的

2501_90421497的博客 727

linux 修改防火墙配置

1.首先介绍一下指令和相关配置文件 启动指令:service iptables start    重启指令:service iptables restart    关闭指令:service iptables stop       然后是相关配置:/etc/sysconfig/iptables    如何操作该配置呢?    vim /etc/sysconfig/iptable

bayonet1999的博客 1712

嵌入式STM32控制电梯面板

嵌入式STM32控制电梯面板 用点阵来显示电梯向上还是向下运动,用数码管来显示楼层数(由于灯阵显示楼层数比较困难故用数码管代替)。当按下对应的按钮,就可以去到对应层数,可上升可下降。 #include "stm32f10x.h" #include "stm32f10x_exti.h" #include "stm32f10x_it.h" #define uint unsigned int #define KEY1 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_10) #define

code_init_的博客 2111

Allegro File菜单实战指南:从导入网表到导出BOM的完整流程

PCB设计离不开对EDA软件菜单体系的深入理解。在Cadence Allegro中,File菜单是数据流转的中枢,它不仅是新建、打开、保存的基础入口,更是连接原理图与版图、设计与制造的关键桥梁。工程师常遇到的“导入网表报错”“导出BOM为空”“板框不闭合”等高频问题,大多源于对File菜单中Import与Export功能的理解不到位。从基础概念出发,先厘清Import(网表、DXF、IPC)与Export(BOM、ODB++、DXF)的工作原理,再结合版本兼容、封装库路径、单位设置等工程细节,即可构建完整的

weixin_32950759的博客 298

dns中的ttl(默认生存时间)和negative caching ttl(否定响应缓存时间)

bind8.2之前的版本,ttl就代表了negative caching ttl 之后的版本增加了negative caching ttl ttl:其他服务器根据ttl址段的时间来缓存解析的dns数据。 negative caching ttl:所查询的数据不存在时,这个否定的回答在其他服务器的缓存时间。 ...

weixin_41718413的博客 1640

【Python音频处理】syncstart 计算媒体文件同步时间偏移

syncstart是一个强大的工具,它简化了多媒体文件的音视频同步过程,特别适用于多设备录制的媒体内容。在使用命令行工具时,可以根据实际需求灵活调整参数,如归一化、降噪、低通滤波等,以提高同步的精度和效率。通过本文介绍的基本操作和应用示例,可以快速掌握syncstart的使用方法,并将其应用到日常的音视频处理工作中。

Mr数据杨 817

无法连接至网络之DNS配置

浏览器打不开网页 昨晚浏览器还能打开网页的,但是今天早上就打不开了。 那我就运行Windows网络诊断,看看有啥信息 我使用的是WiFi,所以猜想是不是WiFi无网络 但是我的TIM,钉钉图标是亮的啊 那就用TIM给我的手机发送一条消息,手机接收到了,那就不是WiFi网络问题了 检查代理服务器(没使用), 防火墙(一个站点打不开时) DNS配置(记得昨晚在其它应用点了一下) 在浏览器网址栏输...

weixin_43891970的博客 2758

51单片机 驱动有源/无源蜂鸣器+Proteus仿真

51单片机 驱动有源/无源蜂鸣器+Proteus仿真 相关篇《51单片机 Proteus仿真有源蜂鸣器始终不响原因及解决方法》 电路搭建 采用NPN管驱动有源蜂鸣器电路 采用PNP管驱动有源蜂鸣器电路 采用PNP管驱动无源蜂鸣器 采用NPN管驱动无源蜂鸣器 Proteus元器件列表 实例代码 /************************************************************************************* * 实验现象:下载程序

perseverance51博客 2万+

37、基于视觉的轻量级面部呼吸和心率测量技术

本文提出了一种基于视觉的轻量级面部呼吸和心率测量技术,通过远程光电容积脉搏波描记法(RPPG)和面部振动信息实现非接触式生理信号采集。创新性地结合框选和特征点选择多个感兴趣区域(ROI),并采用光流跟踪、主成分分析(PCA)和集成经验模态分解(EEMD)等方法优化信号处理流程。实验结果表明,该方法在测量精度和稳定性方面优于传统方法,并可在树莓派4等低功耗平台上实现实时运行,具有广泛的应用前景。

r7s8t的博客 307

如何检查代理和防火墙设置

罗拉ROLA-IP是一家来自纽约的代理IP提供商,由李嘉诚先生投资建设,韩国人工智能、自动驾驶、虚拟现实方面的领军企业World IT Show投资入股,由美国纽约大学IT管理教授团队研究开发,进入中国市场6年多,全世界设有多个分子公司。接下来,我们要检查代理和防火墙的设置,因为在绝大多数情况下,它们是导致这个错误的原因,尤其是当用户使用免费代理时。对网站的访问受阻实际上是一个非常常见的错误,它既可能是由于物理原因(硬件问题)造成的,也可能是由于软件错误引起的。检查代理设置,并确保其正确配置。

Cf444的博客 2万+

基于卷积神经网络的遥感图像地物分类

AI:89-基于卷积神经网络的遥感图像地物分类 基于卷积神经网络的遥感图像地物分类是一个令人兴奋的领域,它在环境监测、城市规划、农业、国防等领域具有广泛的应用。深度学习技术为我们提供了更准确、高效的工具,有望在未来进一步提高分类性能。在本文中,我们探讨了卷积神经网络的工作原理、数据准备、模型构建、训练和评估过程,并提供了多个代码示例。此外,我们讨论了地物分类的应用和挑战,以及未来的发展趋势。

一键难忘的博客 2717

linux中高级

模块一:Linux内核 (kernel) Kernel 的功能、Kernel 版本的定义、Kernel 主要用途、从光盘取得kernel 的源代码、从官方站点取得RPM ( 或 SRPM ) 源代码包、使用yum install 安裝内核源代码、从Linux Kernel 的官方网站获得内核源代码、设置内核选项、获取CPU 的信息、获取PCI 设备信息、编译内核所需要的套件、使用...

lovexiaoqiqi的博客 562

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

linux运维面试题总结

1、11月份每天早上6点到12点之间,每隔两个小时执行脚本xxx.sh 0 6-12/2 * 11 * /usr/bin/xxx.sh # 基本格式 : # *  *  *  *  *  command # 分  时  日  月  周  命令 # 第1列表示分钟1~59 每分钟用*或者 */1表示 # 第2列表示小时1~23(0表示0点) # 第3列表示日期1~31 # 第4列表示月份...

十里平湖的博客 4036

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Linux下使用squid实现代理服务器的搭建

Linux下使用squid实现代理服务器的搭建正向代理服务器反向代理服务器多台资源服务器的轮询调度 正向代理服务器 (1)在一台能上网的虚拟机上进行如下配置,将其作为客户端要访问的代理服务器: yum install -y squid (主配置文件: /etc/squid/squid.conf,默认监听端口3128) vim /etc/squid/squid.conf 将原本的拒绝所有访问,更改为...

weixin_42996595的博客 2327

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

nginx学习笔记1(小d课堂)

nginx概念 反向代理的概念 在阿里云服务器上安装nginx 域名的购买及配置 本地nginx的安装

weixin_52618349的博客 407

Nginx反向代理(详细解读)

文章目录Nginx反向代理1.什么是反向代理2.配置反向代理-准备工作3 配置反向代理 ????大家好!我是近视的脚踏实地,这篇文章主要是学习Nginx反向代理      唯有行动  才能解除你所有的不安 Nginx反向代理 1.什么是反向代理 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请...

Monster丶ZF的博客 2万+

Linux下配置Squid基础教程

Linux下配置Squid基础教程   本视频高清下载地址:http://down.51cto.com/data/437529  本文出自 “李晨光原创技术博客” 博客,请务必保留此出处http://chenguang.blog.51cto.com/350944/912470

李晨光原创IT博客 777

Linux配置成代理服务器

什么是代理服务器。

十一月廿七风雨大作 1万+

配置和管理代理服务器

代理服务器是介于客户端和目标服务器之间的中间服务器,负责转发请求和响应。它可以用于多种目的,包括缓存、过滤、负载均衡和匿名访问。

2503_93245728的博客 1866

linux: 搭建HTTP代理服务器详细指南

它们不仅可以帮助我们访问区域限制的内容,还能提供缓存服务,从而加快数据检索速度,提高安全性,并能有效地管理网络流量。对于开发人员和系统管理员来说,了解如何在RedHat 8这样的现代操作系统上搭建HTTP代理服务器是一项宝贵的技能。Squid是一个高性能的代理缓存服务器,支持多种协议,如HTTP、HTTPS和FTP等。它是开源的,可以在RedHat 8上免费使用。在客户端浏览器的代理设置中,设置代理服务器为我们的RedHat 8服务器的IP地址,端口设置为3128(或在配置文件中指定的端口)。

十年运维开发经验的王义杰在此分享自己的知识和经验 2168

2020-09-06

第四章、squid代理服务器   一、缓存代理服务: 作为应用层的代理服务软件,squid主要提供缓存加速,应用层过滤控制的功能。   1、代理的工作机制 当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容反馈给客户机,如缓存中没有客户机要访问的页面,则有代理服务器向·Internet发送访问请求,当返回的web页面以后,将网页数据保存到缓存中并发送给客户机。 HTTP代理IDE缓存加速对象主要是文字,图像等

Nextfugitivedust的博客 707

配置与管理代理服务器

一、IP地址规划表默认网关:192.168.80.100/24二、配置1.在ydm01基础配置(1)#备份#下载新的 CentOS-Base.repo 到 /etc/yum.repos.d/#在 /etc/yum.repos.d 中更新一下源#运行 yum makecache 生成缓存2.在ydm01安装httpd和squid服务(1)查看是否已经安装了服务。(2)若未安装服务,输入下列命令安装服务。

2401_85020154的博客 1657
上一篇: linux下logrotate 配置和理解
下一篇: Linux 查看磁盘分区、文件系统、磁盘的使用情况相关的命令和工具介绍
cjwid
博客等级 码龄19年 19粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值