以下脚本在ubuntu 18.04上测试成功,不兼容iptables被替换成
nftables的版本。
透明代理在家庭网络和企业网络中都得到了广泛的应用,尤其是在网络安全和性能优化方面。
优点:
- 无需客户端配置:客户端不需要进行任何设置,代理是由路由器自动处理的。
- 可用于流量监控与管理:透明代理可以用于监控和限制网络流量,特别适用于企业或学校等环境,对流量进行统一过滤和监控。
- 提高网络性能:缓存和内容压缩封包,可以极大的提高网络响应速度。
缺点:
- 可能影响隐私:由于透明代理会拦截所有流量,它可能会泄露用户的网络行为。
在路由器中,透明代理通常通过以下几种技术实现:
- 端口重定向(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 策略,抓包进入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
标签:脚本,iptables,trojan,sudo,配置,SHA,nat,ECDHE,路由器 From: https://www.cnblogs.com/aldary/p/18617662