现在的位置:首页>空间域名>正文

CentOS系统中使用iptables设置端口转发

2016年08月08日 ⁄ 共 2327字 评论 1 条

其实Haproxy也是可以设置端口转发的,但Haproxy无法转发udp数据,所以这次使用iptables来转发tcp和udp的数据.实话说,iptables这个命令,还是很有用处的,在linux下,到处都可以看到这个命令,而CentOS系统就更不用说了.

首先我们来看一下数据包的走向:

  1. +--------+        +--------+        +--------+
  2. |        | <--D-- |        | <--C-- |        |
  3. |  用户  |        | 中转机 |        | 目标    |
  4. |        | --A--> |        | --B--> |        |
  5. +--------+        +--------+        +--------+

这样看应该是比较直观的.

A: 用户发出加密请求到SSS服务器

B: SSS服务器解密请求后转发到目标服务器

C: 目标服务器回应SSS服务器

D: SSS服务器加密回应返回给用户然后解密后使用

清空相关规则

首先我们需要加载相关的内核模块:

  1. /sbin/modprobe ip_tables
  2. /sbin/modprobe ip_nat_ftp
  3. /sbin/modprobe ip_conntrack_ftp

清除预设表 filter 中,所有规则链中的规则:

  1. /sbin/iptables -F

清除nat表中,所有规则链中的规则

  1. /sbin/iptables -F -t nat

清除预设表 filter 中,使用者自订链中的规则:

  1. /sbin/iptables -X

将封包计数器归零,封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具:

  1. /sbin/iptables -Z

清除mangle表中,所有规则链中的规则:

  1. iptables -F -t mangle

清除mangle表中,使用者自订链中的规则:

  1. iptables -t mangle -X

清除nat表中,使用者自订链中的规则:

  1. iptables -t nat -X

定义链的规则(设定预设规则):

  1. /sbin/iptables -P INPUT ACCEPT
  2. /sbin/iptables -P FORWARD DROP
  3. /sbin/iptables -P OUTPUT ACCEPT

打开 forward 功能 (或在/etc/sysconfig/network 中添加 FORWARD_IPV4=yes 打开转发功能,实现各网段互访):

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

配置iptables转发

  1. iptables -t nat -A POSTROUTING -j MASQUERADE
  2. iptables -A FORWARD -s 1.1.1.1 -j ACCEPT
  3. iptables -t nat -A PREROUTING -p tcp --dport 10000:20000 -j DNAT --to-destination 1.1.1.1:10000-20000
  4. iptables -t nat -A PREROUTING -p udp --dport 10000:20000 -j DNAT --to-destination 1.1.1.1:10000-20000
  5. iptables -t nat -A POSTROUTING -p tcp -d 1.1.1.1 --dport 10000:20000 -j SNAT --to-source 2.2.2.2
  6. iptables -t nat -A POSTROUTING -p udp -d 1.1.1.1 --dport 10000:20000 -j SNAT --to-source 2.2.2.2
  7. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  8. iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

然后继续下面的操作:

  1. ###重要说明 from www.mfbuluo.com ###
  2. 1.1.1.1 为目标服务器的IP地址
  3. 10000:20000  需要转发的端口范围
  4. 2.2.2.2 本机服务器的IP(也就是中转机)
  5. 最后面两条是ssh的端口,根据你自己使用的ssh端口进行添加
  6. ---------------------------------------------------
  7. 然后保存和重启iptables以及添加开机启动
  8. 保存:service iptables save
  9. 重启:service iptables restart
  10. 开机启动:chkconfig iptables on

iptables转发的配置也就这么多,写这些步骤的目的只是为了让大家明白原理,下面贴出脚本下载地址:

  1. wget --no-check-certificate https://soft.jiasu.cloud/iptables/iptables.sh

此脚本并非是一键脚本,下载后对照上面的说明,使用vim修改里面的IP地址以及端口,修改完以后保存,然后执行:bash iptables.sh

 

 

小结

iptables转发的配置,如果需要或用得上的朋友,都可以测试一下.需要注意的是,本机服务器的IP这些东西,不要搞错了.

评论 1 条 评论内容很精采,有内幕,而且绝对有干货

  1. 香港vps 2016年08月08日 16:27  @回复  Δ-49楼 回复

    需要用到的代码好多,看来弄这个的确不简单,而且服务器IP这些也容易犯错误

给我留言