以下脚本在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