Bootstrap

linux 停止路由转发策略_linux开启内部路由转发、关闭ICMP重定向功能

一、开启路由转发

转自http://blog.51cto.com/zouqingyun/1697571

一组内部机器需要连接外网,则需要找一台机器,即可以连接外网,内网机器也可以连接。

因此将这台外网机器当做路由器,做路由转发

1、在需要做路由转发的机器上执行下面命令

1

[root@shx ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

若是ipv6则执行

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

但一般不建议,下次开机它又会变为0

修改它的配置文件,把net.ipv4.ip_forward = 1

1

2

3

4

5

6

7

8

9

[root@shx-web150 ~]# vim /etc/sysctl.conf

# Kernel sysctl configuration file for Red Hat Linux

#

# For binary values, 0 is disabled, 1 is enabled. See sysctl(8) and

# sysctl.conf(5) for more details.

# Controls IP packet forwarding

net.ipv4.ip_forward = 1

# Controls source route verification

net.ipv4.conf.default.rp_filter = 1

若是ipv6,则添加net.ipv6.conf.all.forwarding=1 配置项的值

让它立即生效,就执行

1

[root@shx-web150 ~]# sysctl -p

2、紧接着我就把内网机器网关指向A的内网IP地址,结果,还是不能连接到外网,纠结许久。后面想到,才想起要在A做一个NAT转发

1

[root@shx-web150 ~]#iptables -t nat -A POSTROUTING -s 10.1.2.0/24 -j MASQUERADE

若是ipv6,则使用ip6tables。

可参考https://blog.csdn.net/hcancientmoon/article/details/40158969

ipv6相关信息可参考https://www.cnblogs.com/xiangxisheng/p/6415568.html

二、关闭ICMP重定向

ipv4:

# 关闭 icmp 的重定向

echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects

ipv6:

echo 0 > /proc/sys/net/ipv6/conf/all/accept_redirects

echo 0 > /proc/sys/net/ipv6/conf/default/accept_redirects

echo 0 > /proc/sys/net/ipv6/conf/eth0/accept_redirects

linux内核相关可参考:https://blog.csdn.net/l0605020112/article/details/42837093?locationNum=7&fps=1

永久生效(未验证):

ipv4:

# vim /etc/sysctl.conf

net.ipv4.conf.eth0.send_redirects= 0

net.ipv4.conf.eth1.send_redirects= 0

net.ipv4.conf.lo.send_redirects= 0

net.ipv4.conf.default.send_redirects= 0

net.ipv4.conf.all.send_redirects= 0

或者是accept_redirects 。

ipv6:

# vim /etc/sysctl.conf

net.ipv4.conf.eth0.accept_redirects= 0

net.ipv4.conf.eth1.accept_redirects= 0

net.ipv4.conf.lo.accept_redirects= 0

net.ipv4.conf.default.accept_redirects= 0

net.ipv4.conf.all.accept_redirects= 0

参考:https://blog.csdn.net/u010391029/article/details/46441811。

疑问:accept_redirects和send_redirects的区别。

为什么v6里面只有accept_redirects,而v4里面两者都有,两者作用分别是什么。

;