说明:以下的操作只要在Linux下都是通用的。 Linux发行版默认情况下是不开启IP转发功能的。如果架设一个Linux路由或者VPN服务就需要开启该服务。
1、通过访问sysctl的内核ipv4.ip_forward来判断转发是否开启。(说明:现在有些网络已经普及ipv6的,所以下面的命令可以从ipv4改为ipv6即可)
使用sysctl:
sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
或者检查/proc下的文件:
cat /proc/sys/net/ipv4/ip_forward
0
ipv4转发没有开启 (值为 0)
2、启动IP转发
通过sysctl可以开启ipv4的转发功能 (无需重启):
sysctl -w net.ipv4.ip_forward=1
或者
echo 1 > /proc/sys/net/ipv4/ip_forward
这种设置只是暂时的;它的效果会随着计算机的重启而失效。
如果想使IP转发永久生效,就请修改**/etc/sysctl.conf** ,在这里可以增加一条net.ipv4.ip_forward = 1
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
如果ipv4转发项已被设为0那么你只需要将它改为1。
3、要想是更改生效,你需要执行以下指令:
sysctl -p /etc/sysctl.conf
在红帽系列的发行版上可以通过重启网络服务使之生效:
service network restart
而在Debian/Ubuntu系列的发行版则用这样的命令:
#早期版本
/etc/init.d/procps.sh restart
#最新版本
/etc/init.d/procps restart
# 常见失败原因:
- 电脑本身没有开启虚拟化支持,需要在重启时进入BIOS里设置。
- 配置nat转发
#查看iptables现有规则
iptables -L -n
#先允许所有,不然有可能会杯具
iptables -P INPUT ACCEPT
# 缺省允许IP转发
iptables -P FORWARD ACCEPT
# 清空所有默认规则,清除原有的filter有中的规则
iptables -F
# 清空所有自定义规则
iptables -X
# 清除原有的nat表中的规则
iptables -t nat -F
利用iptables 实现nat MASQUERADE 共享上网,此处eth0 需要是能够访问外部网络的网卡接口
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
或者
iptables -t nat-A POSTROUTING -s 192.168.121.0/24(内网充当其他同网段内网机器的网关) -j SNAT --to 192.168.159.128(公网ip)
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/05/17 02:29