Iptables-linux服务器做路由转发

本文介绍了一种通过服务器B使内部服务器C能够访问互联网的方法。首先配置了服务器B的双网卡,分别连接内外网络,并确保其能正常上网。接着,在内核文件中开启了转发功能并设置了iptables规则来实现路由转发。最后,通过测试验证了配置的有效性。

1.架构图

 

域网上网案例,实现内部服务器C可以经过服务器B进行上网。

2.局域网机器配置


3.服务器配置

3.1服务器双网卡,一块配置外网IP,一块配置内网IP(内网的不要设置网关)

[root@liang ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:03:1e:48 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.19/24 brd 192.168.1.255 scope global eno16777736

       valid_lft forever preferred_lft forever

3: eno33554976: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:03:1e:52 brd ff:ff:ff:ff:ff:ff

    inet 10.0.0.141/24 brd 10.0.0.255 scope global dynamic eno33554976

       valid_lft 1555sec preferred_lft 1555sec

    inet6 fe80::20c:29ff:fe03:1e52/64 scope link

       valid_lft forever preferred_lft forever

3.2确保服务器可以上网    

[root@liang ~]# ping -c 2 baidu.com

PING baidu.com (123.125.115.110) 56(84) bytes of data.

64 bytes from 123.125.115.110: icmp_seq=1 ttl=128 time=45.9 ms

64 bytes from 123.125.115.110: icmp_seq=2 ttl=128 time=45.8 ms

 

--- baidu.com ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 1002ms

rtt min/avg/max/mdev = 45.807/45.860/45.913/0.053 ms

 

3.3在内核文件/etc/sysctl.conf里开启转发功能,然后执行sysctl -p生效

[root@liang ~]# tail -1 /etc/sysctl.conf  

net.ipv4.ip_forward = 1

 

[root@liang ~]# sysctl -p

net.ipv4.ip_forward = 1

 

3.4配置iptables

[root@liang ~]# iptables -F

[root@liang ~]# iptables -P INPUT ACCEPT

[root@liang ~]# iptables -P FORWARD ACCEPT

[root@liang ~]# iptables -P OUTPUT ACCEPT

3.5路由转发

[root@liang ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 \

-o eno33554976 -j SNAT --to-source 10.0.0.141

 

-s 192.168.1.0/24 内部服务器网段

-o eno33554976 为路由转发服务器的外网网卡

-j SNAT --to-source 10.0.0.141 外网网卡IP地址

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE (伪装,适合外网IP地址变化的配置)

 

4.测试:


笔记来源于:老男孩培训机构教育视频


<think>我们参考用户提供的引用内容,特别是引用[1]、[3]和[4]中关于永久开启路由转发功能的说明。 用户的问题:如何在Linux系统中永久启用路由转发功能? 步骤: 1. 编辑sysctl配置文件(通常是/etc/sysctl.conf)来永久设置内核参数。 2. 在配置文件中设置`net.ipv4.ip_forward=1`。 3. 重新加载配置文件使设置生效。 具体操作如下: ### 永久开启路由转发功能的步骤 1. **使用root权限编辑sysctl配置文件** 打开终端,使用文本编辑器(如vim或nano)编辑`/etc/sysctl.conf`文件: ```bash sudo vim /etc/sysctl.conf ``` 或者 ```bash sudo nano /etc/sysctl.conf ``` 2. **添加或修改内核参数** 在文件中查找`net.ipv4.ip_forward`参数,如果存在则将其值改为`1`;如果不存在,则在文件末尾添加一行: ```bash net.ipv4.ip_forward = 1 ``` 注意:如果使用IPv6,还需要添加`net.ipv6.conf.all.forwarding=1`(可选)[^3][^4]。 3. **保存并退出编辑器** - 在vim中:按`Esc`键,输入`:wq`,然后按回车。 - 在nano中:按`Ctrl+O`保存,按`Ctrl+X`退出。 4. **重新加载配置文件使设置生效** 执行以下命令,让系统重新加载配置文件并立即应用更改: ```bash sudo sysctl -p ``` - 如果配置文件路径不同(如自定义文件),可使用`sudo sysctl -p /path/to/your.conf`。 5. **验证路由转发功能是否开启** 检查当前内核参数状态: ```bash cat /proc/sys/net/ipv4/ip_forward ``` 或使用sysctl命令: ```bash sysctl net.ipv4.ip_forward ``` - 输出为`net.ipv4.ip_forward = 1`即表示已成功启用[^1][^3]。 ### 注意事项 - **临时开启与永久开启的区别**: 使用`echo 1 > /proc/sys/net/ipv4/ip_forward`可临时开启路由转发,但重启后会失效。通过修改`/etc/sysctl.conf`是永久性修改[^1][^3]。 - **配置文件路径**: 部分系统可能使用`/etc/sysctl.d/`目录下的独立配置文件(如CentOS/RHEL)。可创建新文件(如`99-ipforward.conf`)并写入参数,再执行`sysctl -p`[^4]。 - **IPv6支持**: 若需启用IPv6转发,需在配置文件中添加`net.ipv6.conf.all.forwarding=1`[^3]。 - **安全加固**: 路由功能开启后,务必配置防火墙(如iptables或nftables)限制非法转发,避免安全风险[^2]。 ### 操作示例 ```bash # 步骤1:编辑配置文件 sudo vim /etc/sysctl.conf # 步骤2:添加以下内容(若已存在则修改值) net.ipv4.ip_forward = 1 # 步骤3:保存退出后加载配置 sudo sysctl -p # 步骤4:验证结果 sysctl net.ipv4.ip_forward # 应输出 net.ipv4.ip_forward = 1 ``` 通过以上步骤,Linux服务器路由转发功能将永久开启,即使重启系统也会保持生效[^1][^3][^4]。 §§相关问题§§ 1. 如何临时开启Linux服务器路由转发功能? 2. 路由功能开启后,如何配置防火墙规则防止非法转发? 3. 如何检查Linux服务器是否正在转发数据包? [^1]: 通过修改`/proc/sys/net/ipv4/ip_forward`文件可临时启用路由转发,永久生效需修改配置文件[引用1]。 [^2]: 路由功能启用后需结合防火墙规则加强安全防护[引用2]。 [^3]: 永久开启路由转发需在`/etc/sysctl.conf`中设置`net.ipv4.ip_forward=1`并通过`sysctl -p`加载[引用3]。 [^4]: `sysctl`命令用于管理内核参数,`-p`选项从配置文件加载设置[引用4]。</think>### 如何在Linux系统中永久启用路由转发功能 在Linux系统中永久启用路由转发功能需要修改内核参数配置文件,以下是具体操作步骤: #### 1. **编辑sysctl配置文件** ```bash sudo vim /etc/sysctl.conf ``` 或 ```bash sudo nano /etc/sysctl.conf ``` #### 2. **添加或修改参数** 在文件中找到或添加以下配置项: ```bash net.ipv4.ip_forward = 1 ``` 如果是IPv6环境,还需添加: ```bash net.ipv6.conf.all.forwarding = 1 ``` #### 3. **保存并退出** - Vim:按`ESC`后输入`:wq` - Nano:按`Ctrl+X` → `Y` → `Enter` #### 4. **立即生效配置** ```bash sudo sysctl -p ``` 该命令会加载`/etc/sysctl.conf`中的配置,输出类似: ``` net.ipv4.ip_forward = 1 ``` #### 5. **验证配置** ```bash cat /proc/sys/net/ipv4/ip_forward ``` 输出为`1`表示成功启用[^1][^3][^4]。 #### 6. **(可选)创建独立配置文件** 对于系统化管理的服务器,建议在`/etc/sysctl.d/`创建独立文件: ```bash echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-ipforward.conf sudo sysctl --system ``` ### 关键注意事项 1. **权限要求**:所有操作需`root`权限或`sudo` 2. **配置位置**:优先使用`/etc/sysctl.d/`目录而非直接修改`sysctl.conf`[^4] 3. **防火墙配合**:启用路由后需配置`iptables`或`firewalld`允许转发[^2] 4. **IPv6支持**:双栈环境需同时启用IPv6转发 5. **服务依赖**:某些发行版需启动`network.service`或`systemd-networkd` > **临时启用 vs 永久启用** > 临时启用(重启失效): > ```bash > echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward > ``` > 永久启用需通过配置文件实现[^1][^3] ### 配置示例 完整配置文件示例: ```bash # /etc/sysctl.d/99-ipforward.conf net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1 net.ipv4.conf.all.rp_filter = 2 # 松散路由验证 ``` ### 验证路由功能 ```bash # 检查内核参数 sysctl net.ipv4.ip_forward # 测试数据包转发 tcpdump -i eth0 icmp # 在转发接口抓包 ping -c 4 目标IP # 从另一主机测试 ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值