CentOS下开启配置端口转发教程LinuxServer

印迹发布于:2020-4-20 1055

案例1:

开启IP端口转发

首先开启IP转发功能,默认是关闭的。

临时修改:

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

修改过后就马上生效,但如果系统重启后则又恢复为默认值0。

永久修改:

vi /etc/sysctl.conf
# 找到下面的值并将0改成1
net.ipv4.ip_forward = 1
# sysctl -p(使之立即生效)

默认值0是禁止ip转发,修改为1即开启ip转发功能。

配置端口转发

假设用户访问172.16.4.247:728时让它转发到172.16.4.97:80:

# iptables -t nat -A PREROUTING -p tcp -d 113.108.110.61 --dport 728 -j DNAT --to-destination 172.16.4.97:80
# iptables -t nat -A POSTROUTING -p tcp -s 172.16.4.97 --sport 80 -j SNAT --to-source 172.16.4.247
# service iptables save(将当前规则保存到 /etc/sysconfig/iptables)

或者,你也可以直接修改/etc/sysconfig/iptables文件:

-A PREROUTING -d 172.16.4.247/32 -p tcp -m tcp --dport 728 -j DNAT --to-destination 172.16.4.97:80
-A POSTROUTING -s 172.16.4.97/32 -p tcp -m tcp --sport 80 -j SNAT --to-source 172.16.4.247

最后不要忘了开放728端口

-A INPUT -p tcp -m state --state NEW -m tcp --dport 728 -j ACCEPT

配置完成后,记得重启防火墙:

# service iptables restart

本机端口转发

如果只需要在本机间不同的端口转发就比较容易了,比如 访问 http://ip:729 我想返回 http://ip:80 的内容,配置如下:

[root@localhost sbin]# iptables -t nat -A PREROUTING -p tcp --dport 729 -j REDIRECT --to-ports 80
[root@localhost sbin]# service iptables save
[root@localhost sbin]# service iptables restart
案例2:

由于业务中个别TCP的服务需要做迁移,而该服务目前又是不是集群的方式对外提供服务,为了尽可能的缩短服务的中断,在部署完新服务后,原服务器的端口需要转发TCP的流量到新的服务器,经过一段时间后用户更新了配置,流量大体上直接向新服务器跑时,再将老服务器的端口撤掉。

针对centos7的TCP端口转发找到2种途径:

1)firewalld

      优:系统自带的防火墙,不需要配置其他软件就能实现TCP流量的转发;

      缺:必须是firewalld运行的时候才能转发,但是有些服务的运行不适合开启firewalld,或者原先设计就是关闭服务器自身的防火墙而依靠外部的防火墙(比如云服务商的安全组);

2)rinetd

      优:不管防火墙是否开启,都可以使用该服务实现端口转发(当然防火墙得开放这个端口);

      缺:需要装服务,而且是一个最后更新时间是2003年的工具,面对十几年的系统网络发展会不会有风险需要大量试验后才能知道;

 一、firewalld

# 允许防火墙伪装IP
firewall-cmd --add-masquerade

 

# 增加80、8080端口的映射到192.168.13.1的80、8080端口
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.13.1:toport=80 --permanent
firewall-cmd --add-forward-port=port=8080:proto=tcp:toaddr=192.168.13.1:toport=8080 --permanent

  二、rinetd

 # 获取rinetd源码包到/opt目录下

cd /opt
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar -zxvf rinetd.tar.gz

 # 进入rinetd目录

cd rinetd

 # 设置转发端口的范围

sed -i 's/65536/65535/g' rinetd.c

# 创建目录

mkdir -p /usr/man

 # 编译并安装

make && make install

# 编辑配置文件

vi /etc/rinetd.conf

# 表示将所有发往本机80、8080端口的请求转发到192.168.13.1的80、8080端口(0.0.0.0表示本机绑定所有可用地址)

# 将下面的内容添加到rinetd.conf文件内,wq保存。

0.0.0.0 80 192.168.13.1 80
0.0.0.0 8080 192.168.13.1 80

  # 启动rinetd

rinetd -c /etc/rinetd.conf



http://www.virplus.com/thread-1282.htm
转载请注明:2020-4-20 于 VirPlus 发表

推荐阅读
最新回复 (0)

    ( 登录 ) 后,可以发表评论!

    返回