本文介绍如何使用linux创建一台简单的路由服务器。主要包括几个参数的设置:ip_forward和rp_filter。
1.开启IP forwarding
# 重启后失效
$ echo "1" > /proc/sys/net/ipv4/ip_forward
或者
编辑/etc/sysctl.conf,做如下修改
net.ipv4.ip_forward = 1
# sysctl用于在内核工作时直接修改内核参数
$ sysctl -p
2. 关闭rp_filter
echo "0"> /proc/sys/net/ipv4/conf/<device>/rp_filter
或者
echo "0"> /proc/sys/net/ipv4/conf/all/rp_filter
默认情况下,为了防止IP欺骗(spoofing)攻击,如果收到packet的源地址,和接收网卡的网络不一致,那么packet将被丢弃。
当跨两个网络通信时,会出现这个问题,如下图:
Host_A <192.168.1.10>
|
<192.168.1.1>
Router_A
<192.168.2.1>
|
<192.168.2.254>
Router_B
<192.168.3.254>
|
Host_B<192.168.3.10>
主机A发送packet给主机B时,packet<src:192.168.1.10, dst:192.168.3.10>到达Router_B时,由于源地址(192.168.1.10)和Router接收网卡(192.168.2.254)不在一个网络,将被直接丢弃。
linux路由服务,古老的榕树,5-wow.com