Linux服务器利用防火墙iptables策略进行端口跳转的方法
两台不同服务器转发
打开端口转发的功能
首先开启IP转发功能,默认是关闭的。
临时修改:
[root@localhost ~]# 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转发功能。
配置端口转发
假设用户访问115.29.112.119:8804
时我想让它转发到42.99.16.84:8890
首先要在服务器上开放8804端口
修改配置文件:vim/etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8804 -j ACCEPT
或者命令行执行并保存
[root@localhost sysconfig]# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8804 -j ACCEPT
[root@localhost sysconfig]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ 确定 ]
端口转发
方法一:命令行执行
需要保存,不然只是即时生效,已重启防火墙规则就会被清空
iptables -t nat -A PREROUTING -d 115.29.112.119
-p tcp –dport 8804
-j DNAT –to-destination 42.99.16.84:8890
iptables -t nat -A POSTROUTING -d 42.99.16.84
-p tcp –dport 8890
-j SNAT –to-source 115.29.112.119
不需要更改配置文件就保存的命令:service iptables save
方法二:直接保存到配置文件
修改/etc/sysconfig/iptables配置文件,加入规则
-A PREROUTING -d 115.29.112.119
-p tcp –dport 8804
-j DNAT –to-destination 42.99.16.84:8890
-A POSTROUTING -d 42.99.16.84
-p tcp –dport 8890
-j SNAT –to-source 115.29.112.119
配置完重启防火墙:
1.systemctl restart iptables(centos7);2.service iptables restart(centos7以前版本)
查看配置好的策略
iptables -t nat --list --line-numbers
本机端口转发
如果只需要在本机间不同的端口转发就比较容易了,比如 访问 http://ip:8888 我想返回 http://ip:6666 的内容,配置如下:
[root@localhost ~]# iptables -t nat -A PREROUTING -p tcp --dport 8888 -j REDIRECT --to-ports 6666
[root@localhost ~]# service iptables save
[root@localhost ~]# service iptables restart
以上就是本文的全部内容,希望对大家的学习有所帮助。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MPEG4视频中,I帧、p帧、B帧的判定(转载) By HKL,
- 使用attrib命令解决存储器中毒后文件夹被隐藏的方法 By HKL,
- 在Archlinux上通过qemu运行ReactOS By HKL,
- Archlinux下解决wireshark普通用户抓包权限问题 By HKL,
- 使用jemalloc对nginx进行优化 By HKL,
- 配置IIS6+PHP5.6+MySQL5 By HKL,
- haproxy与nginx集成实例 By HKL, Wed
- 通过JavaScript实现HTTP到HTTPS的强制跳转 By HKL,
- 在Windows10 Bash中默认启动其他shell By HKL,
- 基于R的竞争风险模型的列线图
- 安装zabbix的windows系统agent By HKL,
- NetBSD使用sysupgrade工具更新系统 By HKL,
- asterisk服务器的sip、iax2中继对接 By HKL,
- 用Windows10自带PowerShell获取文件Hash(MD5、SHA1/256)值得方法 By H
- 移除Blog对jQuery的依赖 By HKL, Tues