ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

linux 端口转发

linux 端口转发 一 从一台机到另一台机端口转发启用网卡转发功能#echo 1 /proc/sys/net/ipv4/ip_forward举例:从192.168.0.132:21521(新端口)访问192.168.0.211:1521端口a.同一端口转发(192.168.0.132上开通1521端口访问 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT)iptables -t nat -I PREROUTING -p tcp --dport 1521 -j DNAT --to 192.168.0.211iptables -t nat -I POSTROUTING -p tcp --dport 1521 -j MASQUERADEb.不同端口转发(192.168.0.132上开通21521端口访问 iptables -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21521 -j ACCEPT)iptables -t nat -A PREROUTING -p tcp -m tcp --dport21521-j DNAT --to-destination192.168.0.211:1521iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -d 192.168.0.211 -p tcp -m tcp --dport 1521 -j SNAT --to-source 192.168.0.132以上两条等价配置(更简单[指定网卡]):iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 31521 -j DNAT --to 192.168.0.211:1521iptables -t nat -A POSTROUTING -j MASQUERADE保存iptables#service iptables save#service iptables restart二 用iptables做本机端口转发代码如下iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080估计适当增加其它的参数也可以做不同IP的端口转发。如果需要本机也可以访问则需要配置OUTPUT链(********特别注意:本机访问外网的端口会转发到本地,导致访不到外网,如访问yown.com,实际上是访问到本地,建议不做80端口的转发或者指定目的 -d localhost)iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-ports 8080原因外网访问需要经过PREROUTING链但是localhost不经过该链因此需要用OUTPUT。#######################################################################################概述公司有一些核心MySQL服务器位于核心机房的内网段作为运维人员经常需要去连接这些服务器因无法直接通过外网访问给管理造成了不便。思路虽然解决此问题的方法及思路有很多但当下想使用IPTABLES的端口重定向功能解决此问题比较简单易用而且扩展性也比较好依次类推可以运用到其他的端口转发方面的应用。网络环境公网服务器 eth0:公网IP eth1:内网IP - 192.168.1.1mysql服务器eth1:内网IP - 192.168.1.2实现方法通过访问公网IP的63306端口来实现到内网MYSQL服务器的3306端口的访问在公网服务器上配置脚本iptables -t nat -A PREROUTING -p tcp --dport 63306 -j DNAT --to-destination 192.168.1.2:3306iptables -t nat -A POSTROUTING -d 192.168.1.2 -p tcp --dport 3306 -j SNAT --to 192.168.1.1允许服务器的IP转发功能echo 1 /proc/sys/net/ipv4/ip_forward使用方法mysql -h 公网IP -p 63306 -uroot -p###############################################################################################由于业务需要服务器越来越多内网服务器无外网环境管理甚是不便所以折腾了一下外网到内网的端口转发以达到轻松管理的目的贴一下心得。S1:eth0 10.0.0.1eth1 x.x.x.xS2:eth0 10.0.0.2S1 8082端口转发到内网机器22端口iptables规则配置如下iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 8082 -j DNAT --to-destination 10.0.0.2:22iptables -t nat -A POSTROUTING -d 10.0.0.2 -p tcp --dport 22 -j SNAT --to-source x.x.x.x说明iptables -t nat -A PREROUTING -d 对外公网ip -p tcp --dport 对外端口 -j DNAT --to 内部实际提供服务的ip:实际提供服务的端口iptables -t nat -A POSTROUTING -d 内部实际提供服务的ip-p tcp --dport 实际提供服务的端口 -j SNAT --to-source 运行iptables机器的内网ip#######################################################################################一、firewalld 守护进程firewall-cmd命令需要firewalld进程处于运行状态。我们可以使用systemctl status/start/stop/restart firewalld来控制这个守护进程。firewalld进程为防火墙提供服务。当我们修改了某些配置之后尤其是配置文件的修改firewall并不会立即生效。可以通过两种方式来激活最新配置systemctl restart firewalld和firewall-cmd --reload两种方式前一种是重启firewalld服务建议使用后一种“重载配置文件”。重载配置文件之后不会断掉正在连接的tcp会话而重启服务则会断开tcp会话。二、控制端口/服务可以通过两种方式控制端口的开放一种是指定端口号另一种是指定服务名。虽然开放http服务就是开放了80端口但是还是不能通过端口号来关闭也就是说通过指定服务名开放的就要通过指定服务名关闭通过指定端口号开放的就要通过指定端口号关闭。还有一个要注意的就是指定端口的时候一定要指定是什么协议tcp还是udp。知道这个之后以后就不用每次先关防火墙了可以让防火墙真正的生效。?firewall-cmd --add-servicemysql # 开放mysql端口firewall-cmd --remove-servicehttp # 阻止http端口firewall-cmd --list-services # 查看开放的服务firewall-cmd --add-port3306/tcp # 开放通过tcp访问3306firewall-cmd --remove-port80tcp # 阻止通过tcp访问3306firewall-cmd --add-port233/udp # 开放通过udp访问233firewall-cmd --list-ports # 查看开放的端口三、伪装IP防火墙可以实现伪装IP的功能下面的端口转发就会用到这个功能。?firewall-cmd --query-masquerade # 检查是否允许伪装IPfirewall-cmd --add-masquerade # 允许防火墙伪装IPfirewall-cmd --remove-masquerade# 禁止防火墙伪装IP四、端口转发端口转发可以将指定地址访问指定的端口时将流量转发至指定地址的指定端口。转发的目的如果不指定ip的话就默认为本机如果指定了ip却没指定端口则默认使用来源端口。如果配置好端口转发之后不能用可以检查下面两个问题比如我将80端口转发至8080端口首先检查本地的80端口和目标的8080端口是否开放监听了其次检查是否允许伪装IP没允许的话要开启伪装IP?# 将80端口的流量转发至8080firewall-cmd --add-forward-portport80:prototcp:toport8080# 将80端口的流量转发至192.168.0.1firewall-cmd --add-forward-portport80:prototcp:toaddr192.168.1.0.1# 将80端口的流量转发至192.168.0.1的8080端口firewall-cmd --add-forward-portport80:prototcp:toaddr192.168.0.1:toport8080当我们想把某个端口隐藏起来的时候就可以在防火墙上阻止那个端口访问然后再开一个不规则的端口之后配置防火墙的端口转发将流量转发过去。端口转发还可以做流量分发一个防火墙拖着好多台运行着不同服务的机器然后用防火墙将不同端口的流量转发至不同机器。总结以上就是这篇文章的全部内容了希望本文的内容对大家的学习或者工作能带来一定的帮助如果有疑问大家可以留言交流谢谢大家对脚本之家的支持。
返回列表