IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Linux restful请求实现IP:端口转发功能 -> 正文阅读

[系统运维]Linux restful请求实现IP:端口转发功能

1 iptables简介和使用

1.1 iptables简介

iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。

1.2 iptables语法

iptables(选项)(参数)


-t<表>:指定要操纵的表;

?-A:向规则链中添加条目;

-D:从规则链中删除条目;

-i:向规则链中插入条目;

-R:替换规则链中的条目;

-L:显示规则链中已有的条目;

-F:清楚规则链中已有的条目;

-Z:清空规则链中的数据包计算器和字节计数器;

-N:创建新的用户自定义规则链;

-P:定义规则链中的默认目标;

-h:显示帮助信息;

-p:指定要匹配的数据包协议类型;

-s:指定要匹配的数据包源IP地址;

-j<目标>:指定要跳转的目标;

-i<网络接口>:指定数据包进入本机的网络接口;

-o<网络接口>:指定数据包要离开本机所使用的网络接口
?

iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

iptables表:

  • Filter(过滤器):主要和进入Linux的数据包有关,是默认的tables;包过滤,用于防火墙规则
  • NAT (地址转换):Network Address Translation的缩写,这个表格主要用来进行数据包的源地址以及目的地址的IP和Port的转换;地址转换,用于网关路由器
  • Mangle:数据包修改(QOS),用于实现服务质量。
  • raw:高级功能,如:网址过滤。

? 每个表包含多个规则链名包括:

  • INPUT链:处理输入数据包。
  • OUTPUT链:处理输出数据包。
  • PORWARD链:处理转发数据包。
  • PREROUTING链:用于目标地址转换(DNAT)。
  • POSTOUTING链:用于源地址转换(SNAT)。
  • Filter过滤器的链
  • INPUT: 定义规则过滤想要进入Linux主机的数据包;
  • OUTPUT:处理Linux主机想要送出去的数据包;
  • FORWARD:与当前的Linux主机无关,需要转发到其他计算机的包;
  1. NAT地址转换的链
  • PREROUTING:进行路由判断前要遵循的规则;
  • POSTROUTING:进行路由判断后要遵循的规则;
  • OUTPUT:过滤发出去的数据包

动作包括:

  • ACCEPT:接收数据包。
  • DROP:丢弃数据包。
  • REDIRECT:重定向、映射、透明代理。
  • SNAT:源地址转换。 DNAT:目标地址转换。
  • MASQUERADE:IP伪装(NAT),用于ADSL。
  • LOG:日志记录。

1.3 常用命令

(1)查看已添加的iptables规则

iptables -L -n -v

或者:

iptables -t nat -L -n

?

(2)删除已经添加的iptables规则

将所有iptables以序号标记显示,执行:
?

iptables -L -n --line-numbers

?比如要删除INPUT里序号为8的规则,执行:
?

iptables -D INPUT 8

1.4 补充IP转发

IP地址分为公有ip地址和私有ip地址,Public Address是由INIC(internet network information center)负责的,这些IP地址分配给了注册并向INIC提出申请的组织机构。Private Address属于非注册地址,专门为组织内部使用。Private Address是不可能直接用来跟WAN通信的,要么利用帧来通信(FRE帧中继,HDLC,PPP),要么需要路由的转发(nat)功能把私有地址转换为公有地址才行。

出于安全考虑,Linux系统默认是禁止数据包转发的。所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功

?查是否启动 ip地址转发

cat /proc/sys/net/ipv4/ip_forward

为1则为开启,为0 则为关闭:

sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1

这种设置只是暂时的,它的效果会随着计算机的重启而失效。

通过在/etc/sysctl.conf设置参数:

如果想使IP转发永久生效,就请修改/etc/sysctl.conf ,在这里可以增加一条net.ipv4.ip_forward = 1

2 跨IP转发restful请求

?转发服务器的功能如下:

数据包从网卡进入,首先会被PREROUTING这个内置的规则链处理。之后会进行路由判断。如果目的地址是本机,则会走INPUT规则链,然后提交给本机程序处理;如果目的地不是本机地址,且开启了转发功能,则会经过FORWARD规则链,然后准备将数据包发出。本机要发出的数据包和经过FORWARD的数据包,会经过路由判断,然后再经过POSTROUTING规则链,最后从网卡发出。这里的ethX和ethY 可以是同一个网卡。

?

假设转发服务器的地址192.168.1.20 。目的服务器的地址是 220.181.111.188 。在转发服务器上把8080端口转发到220.181.111.188的80端口。

?2.1 打开ipv4时的转发功能/etc/sysctl.conf

(1)这个里面增加以下

net.ipv4.ip_forward = 1
                   

(2)然后使用sysctl -p 的命令将参数生效

sysctl -p /etc/sysctl.conf

(3)然后重新启动网络即可

systemctl restart network

(4)如果只是当前系统生效的话 也可以使用?

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

2.2 在PREROUTING上修改目的地址

iptables -t nat -A PREROUTING -p tcp --dport 转发服务器端口 -j DNAT --to-destination 目的地址:目的端口

如:

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 220.181.111.188:80

2.3 在POSTROUTING上修改源地址

iptables -t nat -A POSTROUTING -d 目的地址?-p tcp --dport 目的端口?-j SNAT --to 转发地址

如:

iptables -t nat -A POSTROUTING -d 220.181.111.188 -p tcp --dport 80 -j SNAT --to 192.168.1.20

或者将用伪装的方式

iptables -t nat -A POSTROUTING -d 220.181.111.188 -p tcp?--dport 80?-j?MASQUERADE

2.4 为了防止在FORWARD上面被丢弃,添加规则允许通过

iptables -I FORWARD -d 目的地址 -p tcp --dport?目的端口?-j ACCEPT

iptables -I FORWARD -s 目的地址 -p tcp --sport 目的端口?-j ACCEPT

如:

iptables -I FORWARD -d 220.181.111.188 -p tcp --dport 80 -j ACCEPT

?

iptables -I FORWARD -s 220.181.111.188 -p tcp --sport 80 -j ACCEPT

现在就可以在客户端上测试一下访问?192.168.1.20:8080 就会访问到 220.181.111.188:80

参考文献:

【1】用iptables将流量转发到另外一台机器 - 高艳兵 - 博客园

【2】[iptables实现IP地址重定向(转发)] - 简书

【3】https://www.csdn.net/tags/NtjaIgwsOTUwMzAtYmxvZwO0O0OO0O0O.html?

【4】iptables ? LNMP命令(配置详解)大全?

【5】在linux下开启IP转发的方法 - quanzhan - 博客园?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-12 16:43:29  更:2022-05-12 16:44:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:55:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码