在 Docker 中运行 OpenWrt 旁路网关 透明网关

9 min read

要在Docker中运行OpenWrt旁路网关和透明网关,您可以按照以下步骤进行操作:

  1. 安装Docker:在您的服务器或计算机上安装Docker。可以按照Docker官方文档上的说明进行安装。

  2. 下载OpenWrt镜像:在Docker中下载OpenWrt镜像。您可以通过运行以下命令来获取OpenWrt的官方镜像:

    docker pull openwrtorg/rootfs:x86_64
    
  3. 创建Docker容器:创建一个新的Docker容器来运行OpenWrt。使用以下命令创建容器:

    docker run -it --name openwrt-container openwrtorg/rootfs:x86_64 /bin/sh
    
  4. 配置网络:在容器内部运行以下命令配置网络:

    uci set network.lan.ipaddr='192.168.1.1'  # 设置OpenWrt IP地址
    uci set network.lan.netmask='255.255.255.0'  # 设置OpenWrt子网掩码
    uci commit network
    

    这样,您就可以将OpenWrt的IP地址和子网掩码设置为适合您的网络环境。

  5. 启动容器网络:使用以下命令启动容器网络:

    /etc/init.d/network restart
    
  6. 配置旁路网关:在容器内部运行以下命令配置旁路网关:

    echo '1' > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    

    这将启用IP转发并配置iptables来实现旁路网关功能。

  7. 配置透明网关:如果您想将OpenWrt配置为透明网关,您需要进行额外的配置。这涉及到将OpenWrt网关设置为网络的默认网关,并使用DNAT将所有进入OpenWrt的流量重定向到正确的目标。这可以使用以下命令来完成:

    ip route del default
    ip route add default via xxx.xxx.xxx.xxx dev eth0  # 'xxx.xxx.xxx.xxx' 是您当前网络的默认网关IP
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5080
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 5443
    

    这将设置正确的默认网关以及使用iptables将进入OpenWrt的HTTP和HTTPS流量重定向到OpenWrt上相应的端口。

  8. 保存并退出容器:配置完成后,使用以下命令保存并退出容器:

    exit
    
  9. 运行容器:使用以下命令启动先前创建的容器:

    docker start openwrt-container
    

现在,您可以通过访问OpenWrt容器的IP地址来使用OpenWrt旁路网关和透明网关功能。