GeekHub

Ubuntu配置Squid代理,实现内网设备访问外网

最近碰到一个问题,需要让一个内网设备访问外网连接公网服务器,百度了一下“内网访问外网”搜出来一堆如何通过端口映射从外网访问内网服务器的方案,其实内网设备要访问外网通过squid配置代理服务也可以实现。

首先在可以访问外网的设备上安装squid(我系统是Ubuntu):

sudo apt install squid

然后修改squid配置文件:

sudo vim /etc/squid/squid.conf

以配置http代理为例,找到http_port,默认端口是3128,直接使用默认端口或将其修改为需要使用的的端口皆可:

...
# Squid normally listens to port 3128
http_port 3128
...

然后找到acl CONNECT method …,在下面添加需要代理的网段(这里配置为192.168.199.x网段,掩码长度24位,将该网段命名为lanhome):

...
acl CONNECT method CONNECT
acl lanhome src 192.168.199.0/24
...

找到 http_access allow …,在后面添加内容,使代理允许lanhome网段访问:

...
# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager
http_access allow lanhome
...

最后重启squid服务:

sudo service squid restart

最后在内网设备上配置全局代理,代理服务器地址就是设置好代理的计算机在同一网段下的地址,http代理端口为刚刚设置的3128或自定义端口,保存即可生效。如需其他类型代理则在squid.conf中单独配置端口即可。

更多Squid配置可以参考squid的简单介绍

但是通过代理访问外网有一定的局限性,比如限制了协议,Squid似乎只支持http/https和ftp,不支持socks,所以如果需要使用一些特殊协议还是需要通过端口映射来实现。

相比较Squid代理,更常规的做法是配置NAT实现端口转发,详见Ubuntu配置NAT端口映射,实现内网设备访问外网

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注