IP 表网关

IP 表网关

我正在尝试制作一个 iptables 网关。我从托管公司订购了 3 台专用服务器,全部都配有双网卡。一台服务器已获得所有 IP 地址,并直接连接到互联网,另一台网卡连接到交换机,其他服务器也都连接到该交换机。我想设置 iptables,例如,当 IP 地址 50.0.2.4 进入我的网关服务器时,它会使用第二个网卡将所有流量转发到私有 IP 地址。这样,第二个网卡就可以做任何它需要做的事情,也可以做出响应。我还希望设置它,如果任何其他服务器需要通过互联网下载任何东西,它都可以这样做,并使用用于其传入流量的相同 IP 地址。

最后,我希望能够设置 DNS 和其他我可能没有考虑过的必要的网络内容。

答案1

我使用防火墙生成器为您组合了一个带有 NAT 的 iptables 模板。

网关机

  • 外部接口:eth0(IP:50.0.2.4)
  • 内部接口:eth1(IP:192.168.1.1

  • 服务转发至 192.168.1.10:imap、imaps、pop、pops、smtp、smtps

  • 服务转发至 192.168.1.20:http、https

内机1

  • 接口:eth0(IP:192.168.1.10)

内机2

  • 接口:eth0(IP:192.168.1.20)
    IPTABLES="/sbin/iptables"

    # ================= 表“过滤器”,自动规则
    # 接受已建立的会话
    $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A OUTPUT -m 状态 --状态 ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


    # ================= 表“nat”,规则集 NAT
    #
    # 规则 0(NAT)
    #
    echo“规则 0(NAT)”
    #
    $IPTABLES -t nat -A PREROUTING -p tcp -m tcp -m 多端口 -d 50.0.2.4 --dports 143,993,110,995,25,465 -j DNAT --to-destination 192.168.1.10
    #
    # 规则 1(NAT)
    #
    echo "规则 1 (NAT)"
    #
    $IPTABLES -t nat -A PREROUTING -p tcp -m tcp -m multiport -d 50.0.2.4 --dports 80,443 -j DNAT --to-destination 192.168.1.20
    #
    # 规则 2(NAT)
    #
    echo "规则 2 (NAT)"
    #
    $IPTABLES -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j SNAT --to-source 50.0.2.4



    # ================= 表“过滤器”,规则集策略
    #
    # 规则 0(eth0)
    #
    echo "规则 0 (eth0)"
    #
    # 反欺骗规则
    $IPTABLES -N In_RULE_0
    $IPTABLES -A INPUT -i eth0 -s 50.0.2.4 -j In_RULE_0
    $IPTABLES -A 输入 -i eth0 -s 192.168.1.1 -j In_RULE_0
    $IPTABLES -A 输入 -i eth0 -s 192.168.1.0/24 -j In_RULE_0
    $IPTABLES -A FORWARD -i eth0 -s 50.0.2.4 -j In_RULE_0
    $IPTABLES -A FORWARD -i eth0 -s 192.168.1.1 -j In_RULE_0
    $IPTABLES -A FORWARD -i eth0 -s 192.168.1.0/24 -j In_RULE_0
    $IPTABLES -A In_RULE_0 -j LOG --log-level info --log-prefix “规则 0 -- 拒绝”
    $IPTABLES -A In_RULE_0 -j DROP
    #
    # 规则 1 (lo)
    #
    echo "规则 1 (lo)"
    #
    $IPTABLES -A INPUT -i lo -m state --state NEW -j ACCEPT
    $IPTABLES -A OUTPUT -o lo -m state --state NEW -j 接受
    #
    # 规则 2(全局)
    #
    echo "规则 2 (全局)"
    #
    # 允许 SSH 访问防火墙
    $IPTABLES -N Cid4216X2697.0
    $IPTABLES -A OUTPUT -p tcp -m tcp -m 多端口 --dports 80,443,143,993,110,995,25,465,22 -m 状态 --状态 NEW -j Cid4216X2697.0
    $IPTABLES -A Cid4216X2697.0 -d 50.0.2.4 -j 接受
    $IPTABLES -A Cid4216X2697.0 -d 192.168.1.1 -j 接受
    $IPTABLES -A 输入 -p tcp -m tcp -m 多端口 --dports 80,443,143,993,110,995,25,465,22 -m 状态 --状态新 -j 接受
    #
    # 规则 3(全局)
    #
    echo "规则 3 (全局)"
    #
    # 防火墙可以连接到任何东西
    $IPTABLES -A 输入 -s 50.0.2.4 -m 状态 --状态新 -j 接受
    $IPTABLES -A 输入 -s 192.168.1.1 -m 状态 --状态新 -j 接受
    $IPTABLES -A OUTPUT -m state --state NEW -j 接受
    #
    # 规则 4(全局)
    #
    echo "规则 4 (全局)"
    #
    # 所有其他尝试连接到
    # 防火墙被拒绝并记录
    $IPTABLES -N RULE_4
    $IPTABLES -A OUTPUT -d 50.0.2.4 -j RULE_4
    $IPTABLES -A OUTPUT -d 192.168.1.1 -j RULE_4
    $IPTABLES -A 输入 -j RULE_4
    $IPTABLES -A RULE_4 -j LOG --log-level info --log-prefix “规则 4 -- DENY”
    $IPTABLES -A RULE_4 -j DROP
    #
    # 规则 5(全局)
    #
    echo "规则 5 (全局)"
    #
    $IPTABLES -A 输入 -s 192.168.1.0/24 -m 状态 --状态新 -j 接受
    $IPTABLES -A OUTPUT -s 192.168.1.0/24 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -s 192.168.1.0/24 -m state --state NEW -j ACCEPT
    #
    # 规则 6(全局)
    #
    echo "规则 6 (全局)"
    #
    $IPTABLES -N RULE_6
    $IPTABLES -A 输出 -j RULE_6
    $IPTABLES -A 输入 -j RULE_6
    $IPTABLES -A FORWARD -j RULE_6
    $IPTABLES -A RULE_6 -j LOG --log-level info --log-prefix “规则 6 -- DENY”
    $IPTABLES -A RULE_6 -j DROP

    echo 1 > /proc/sys/net/ipv4/ip_forward

相关内容