[原创]是什么重置了net.inet.ip.forwarding变量?_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1282 | 回复: 0   主题: [原创]是什么重置了net.inet.ip.forwarding变量?        下一篇 
wulcan
版主
等级:中校
经验:1795
发帖:124
精华:0
注册:2014-3-19
状态:离线
发送短消息息给wulcan 加好友    发送短消息息给wulcan 发消息
发表于: IP:您无权察看 2014-12-26 16:11:21 | [全部帖] [楼主帖] 楼主

一台做路由用的机器,在使用mpd拨号时,发现会自动把net.inet.ip.forwarding的值改为0,导致下游的机器不能上网,查找了很长时间才发现原因,小记如下:

1)在mpd拨号成功后,会自动产生一个新的网卡,类型是ng,第一个就是ng0,第二个就是ng1;

 (注:ng是netgraph的缩写,这是FreeBSD下的网络处理框架,mpd就使用了它)

2)在产生的ng网卡之后,系统检测到硬件的变化,就会调用devd,具体的配置在/etc/devd.conf:

notify 0 {
      match "system" "IFNET";
      match "subsystem" "!usbus[0-9]+";
      match "type" "ATTACH";
      action "/etc/pccard_ether $subsystem start";
};
notify 0 {
match "system" "IFNET";
match "type" "LINK_UP";
media-type "ethernet";
action "/etc/rc.d/dhclient quietstart $subsystem";
};


上面的配置,只要是检测到if类的变化,比如添加了新的vlan,都会执行一次/etc/pccard_ether命令,该命令会在/var/log/messages里面产生一句:

devd: Executing '/etc/pccard_ether vlan22 start'


如果检测到该网卡接入了网线,则还会执行一下dhcpclient。

3)在pccard_ether里面,执行了netif:

pccard_ether_start()
{
……
/etc/rc.d/netif quietstart $ifn
……


4)在netif里面,执行了routing:

if [ -f /etc/rc.d/routing -a -n "$cmdifn" ] ; then
for _if in $cmdifn; do
/etc/rc.d/routing start any $_if
done
fi


5)在routing里面,要检测/etc/rc.conf中的gateway_enable参数:

if checkyesno gateway_enable; then
ropts_init inet
echo -n ' gateway=YES'
${SYSCTL} net.inet.ip.forwarding=1 > /dev/null
else
${SYSCTL} net.inet.ip.forwarding=0 > /dev/null
fi


至此,真相大白了,routing会检测/etc/rc.conf的gatewary设置,如果为yes,则启用net.inet.ip.forwarding,否则,则把它置为零,原来就犯了这个错误,直接在rc.local用其他脚本启用了net.inet.ip.forwarding。

结论:

1)直接用sysctl写的内核变量不保险,能在rc.conf中配置的,最好在rc.conf中配置。就相当于老婆和情人的关系,某些时候还是不一样的。

2)如果用mpd当作接入服务器,比如vpn和pppoe等,因为需要频繁的产生、注销ng网卡界面,所以最好不要让devd来这么忙碌的处理这些事情,过于频繁的处理,偶尔会出现锁死系统导致mpd不能正常重启。所在最好在rc.conf中把它禁用:

devd_enable=”NO”


该贴由hui.chen转至本版2015-1-5 10:17:04



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论