美文网首页
iptables端口转发

iptables端口转发

作者: Sartner | 来源:发表于2019-02-25 18:27 被阅读0次

    转发出向请求

    把本机(A)访问服务器(B)的流量转到服务器(C)上

    修改前:A ==== 请求 ====> B
    修改后:A ==== 请求到B,iptables重定向 ====> C

    default_target=10.18.13.127
    new_target=10.1.100.145
    
    # 将本地发送到${default_target}的请求重定向到到${new_target}上
    iptables -t nat -A OUTPUT -d ${default_target} -j DNAT --to ${new_target}
    
    # 只转发指定协议(tcp)
    iptables -t nat -A OUTPUT -p tcp -d ${default_target} -j DNAT --to ${new_target}
    
    # 只转发指定端口
    iptables -t nat -A OUTPUT -p tcp -d ${default_target} --dport 6666 -j DNAT --to-destination ${new_target}:6666
    

    转发入向请求

    把其他服务器(B)访问本机(A)的请求转发到其它服务器(C)上

    修改前:B ==== 请求 ====> A
    修改后:B ==== 请求 ====> A ==== 转发 ====> C

    # 把访问本机6333端口的请求转发到10.1.100.45:80上
    local_port=6333
    target_ip=10.1.100.45
    target_port=80
    iptables -t nat -A PREROUTING -p tcp --dport ${local_port} -j DNAT --to-destination ${target_ip}:${target_port}
    iptables -t nat -A POSTROUTING -d ${target_ip} -p tcp --dport ${target_port} -j MASQUERADE
    

    备注

    使用 -i / -s / -d 精准指定网卡、来源IP、目标IP

    # 来源网口 bond0
    # 来源网段 192.168.0.1/24
    # 来源指向的IP(本机IP,适配本机有多个IP的情况下只转发某个IP的,比如只转发外网IP)
    iptables -t nat -A PREROUTING -i bond0 -s 192.168.0.1/24 -d 10.10.0.10 -p tcp --dport 80  -j DNAT --to 192.168.0.1:80
    

    注意事项

    iptables -t nat 相关操作会导致系统开启 nf_conntrack 模块,默认情况下该模块配置的映射表大小比较小,如果服务器请求压力很大会导致跟踪表写满,从而访问不了端口的情况

    # 增大跟踪表大小
    sysctl -w net.netfilter.nf_conntrack_max=2621440
    echo 655360 > /sys/module/nf_conntrack/parameters/hashsize
    

    相关文章

      网友评论

          本文标题:iptables端口转发

          本文链接:https://www.haomeiwen.com/subject/fhzgyqtx.html