Linux 利用 IP转发使内网连接到公网

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ximenjianxue/article/details/100574486

项目背景描述

实现方法

我们知道,Linux本身自带iptables包过滤,但是其还有一重要功能,即实现数据的转发,本文就利用Linux 自带 iptables 实现从一个网络接口到另一个接口的IP转发(数据包转发)。IP转发的概念是,使 Linux 机器像路由器一样将数据从一个网络发送到另一个网络。所以,它能作为一个路由器或者代理服务器,实现将一个连接的互联网或者网络连接共享给多个客户端机器。

1、启用 IPv4 转发

使用root或sudo执行:# echo 1 > /proc/sys/net/ipv4/ip_forward开启ipv4转发
注:执行命令后可马上启用ip转发,但仅对本次登录有效;要想永久生效需要修改配置文件/etc/sysctl.conf ,增加/修改 net.ipv4.ip_forward = 1。
在这里插入图片描述
修改后执行:# sysctl -p /etc/sysctl.conf ##启用更改,使其立即生效。
在这里插入图片描述

2、配置静态路由转发到公网

本次项目中使用eth0网口的网关配置静态路由转发到公网,来实现连接外网,编辑配置文件:
/etc/sysconfig/static-routes
格式如下:any net 172.16.152.0/24 gw 10.102.3.254
其中:
net 172.16.152.0/24 ----->目标网段,即你需要访问的公网网段
gw 10.102.3.254 -------->本地的网关(前提是开启了本地ipv4转发)

修改配置后需要重启网卡或主机,才能生效;

3.如你本地有1块上网的网卡:

配置iptables,且由于netfilter/iptables是一个无状态的防火墙,我们需要让 iptables 允许已建立的连接通过。:

# iptables -A FORWARD -i 内网口 -o 外网口 -j ACCEPT
#iptables -A FORWARD -i 外网口 -o 内网口 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -t nat -A POSTROUTING -o 外网口 -j MASQUERADE
#iptables save

猜你喜欢

转载自blog.csdn.net/ximenjianxue/article/details/100574486
今日推荐