iptables端口转发

2019-02-25  本文已影响0人  Sartner

转发出向请求

把本机(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
上一篇下一篇

猜你喜欢

热点阅读