以下脚本在ubuntu 18.04上测试成功,不兼容iptables被替换成nftables的版本。
透明代理在家庭网络和企业网络中都得到了广泛的应用,尤其是在网络安全和性能优化方面。
优点:
- 无需客户端配置:客户端不需要进行任何设置,代理是由路由器自动处理的。
- 可用于流量监控与管理:透明代理可以用于监控和限制网络流量,特别适用于企业或学校等环境,可以把目标流量提取到服务器,进行统一过滤和监控,和分析,服务端程序需要自己开发配置,这里不做讨论。
- 提高网络性能:代理技术通过统一缓存和压缩TCP封包,可以极大的提高网络响应速度,提供传输效率。
缺点:
- 可能影响隐私:由于透明代理会拦截所有流量,它可能会泄露用户的网络行为。
在路由器中,透明代理通常通过以下几种技术实现:
- 端口重定向(Port Redirection):路由器将某些特定端口(例如 HTTP 的 80 端口)上的流量重定向到代理服务器。
- 网络地址转换(NAT):通过修改数据包的源地址或目标地址,将流量引导到代理服务器。
- 防火墙规则:通过配置防火墙规则,将流量强制转发到代理服务器。
把linux配置成路由器脚本:
#!/bin/bash
# 配置网络接口,以下网络接口名请按实际端口名修改,对于单一网口的设备配置一个WAN口也可以实现路由功能,可以删掉LAN相关的代码
LAN_INTERFACE="enp0s3"
WAN_INTERFACE="enp0s8"
# 更新ubuntu系统并安装必要的软件
echo "Updating system and installing required packages..."
sudo apt-get update
sudo apt-get install -y dnsmasq iptables-persistent net-tools ifupdown
# 启用 IP 转发
echo "Enabling IP forwarding..."
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
# 设置永久启用 IP 转发
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
# 配置 NAT 转发规则
echo "Configuring NAT and firewall rules..."
sudo iptables -t nat -A POSTROUTING -o $WAN_INTERFACE -j MASQUERADE
sudo iptables -A FORWARD -i $LAN_INTERFACE -o $WAN_INTERFACE -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i $WAN_INTERFACE -o $LAN_INTERFACE -j ACCEPT
# 保存 iptables 规则
echo "Saving iptables rules..."
sudo sh -c 'iptables-save > /etc/iptables/rules.v4'
# 配置网络接口文件 (假设使用的是 `/etc/network/interfaces` 文件管理网络)
echo "Configuring network interfaces..."
cat <<EOL | sudo tee /etc/network/interfaces
# 网络设备基础配置
auto lo
iface lo inet loopback
# 外网接口配置 eth1 (WAN)
#iface $WAN_INTERFACE inet dhcp
# 内网接口配置 eth0 (LAN)
EOL
# 重启网络服务
echo "Restarting networking service..."
sudo systemctl restart networking
# 配置 `dnsmasq` 提供 DHCP 服务
echo "Configuring dnsmasq for DHCP service..."
cat <<EOL | sudo tee /etc/dnsmasq.conf
# 配置 DHCP 服务
interface=$LAN_INTERFACE
dhcp-range=$LAN_DHCP_RANGE
dhcp-option=3,$LAN_IP # 网关地址
dhcp-option=6,$LAN_DNS # DNS 地址
EOL
# 启动 dnsmasq 服务
echo "Starting dnsmasq service..."
sudo systemctl restart dnsmasq
# 完成提示
echo "Ubuntu 已经配置成为NAT路由器"
以上脚本执行完成后,用这个linux主机做网关,监测是否可以正常上网。上网正常,路由器模式配置完成。
以下是TROJAN透明代理部分,以下是trojan的配置文件,模式是nat模式,代理监听在本地的1080端口
{
"run_type": "nat",
"local_addr": "0.0.0.0",
"local_port": 1080,
"remote_addr": "改为代理服务器IP",
"remote_port": 改为代理服务器端口,
"password": [
"改为连接密码"
],
"log_level": 1,
"ssl": {
"verify": false,
"verify_hostname": false,
"cert": "",
"cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA",
"cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
"sni": "",
"alpn": [
"h2",
"http/1.1"
],
"reuse_session": true,
"session_ticket": false,
"curves": ""
},
"tcp": {
"no_delay": true,
"keep_alive": true,
"reuse_port": false,
"fast_open": false,
"fast_open_qlen": 20
}
}
trojan软件运行无报错后,继续配置服务器iptables 策略,截取TCP流量进入1080端口。
#!/bin/bash #在nat表内创建trojan链路,把代理服务器IP和本地IP都加入到白名单,不走代理。 sudo iptables -t nat -N trojan sudo iptables -t nat -A trojan -d 修改为代理服务器IP -j RETURN sudo iptables -t nat -A trojan -d 192.168.0.0/16 -j RETURN sudo iptables -t nat -A trojan -d 10.0.0.0/16 -j RETURN sudo iptables -t nat -A trojan -d 127.0.0.0/8 -j RETURN sudo iptables -t nat -A trojan -d 169.254.0.0/16 -j RETURN sudo iptables -t nat -A trojan -d 172.16.0.0/12 -j RETURN sudo iptables -t nat -A trojan -d 0.0.0.0/8 -j RETURN #拦截所有TCP连接进入代理软件端口 sudo iptables -t nat -A trojan -p tcp -j REDIRECT --to-ports 1080 sudo iptables -t nat -A PREROUTING -p tcp -j trojan # 保存 iptables 规则 echo "Saving iptables rules..." sudo sh -c 'iptables-save > /etc/iptables/rules.v4'
通过运行以上脚本后,可以看到trojan的日志有连接信息输出,说明配置生效。此时还不能上需要代理的网站,因为UDP协议的DNS没有走代理,需要启用浏览器的安全DNS,谷歌浏览器在隐私与安全页面配置: chrome://settings/security
浙公网安备 33010602011771号