出于安全考慮,Linux系統(tǒng)默認(rèn)是禁止數(shù)據(jù)包轉(zhuǎn)發(fā)的。所謂轉(zhuǎn)發(fā)即當(dāng)主機(jī)擁有多于一塊的網(wǎng)卡時(shí)踏枣,其中一塊收到數(shù)據(jù)包,根據(jù)數(shù)據(jù)包的目的ip地址將數(shù)據(jù)包發(fā)往本機(jī)另一塊網(wǎng)卡钙蒙,該網(wǎng)卡根據(jù)路由表繼續(xù)發(fā)送數(shù)據(jù)包茵瀑。這通常是路由器所要實(shí)現(xiàn)的功能。
要讓Linux系統(tǒng)具有路由轉(zhuǎn)發(fā)功能躬厌,需要配置一個(gè)Linux的內(nèi)核參數(shù)net.ipv4.ip_forward马昨。這個(gè)參數(shù)指定了Linux系統(tǒng)當(dāng)前對(duì)路由轉(zhuǎn)發(fā)功能的支持情況;其值為0時(shí)表示禁止進(jìn)行IP轉(zhuǎn)發(fā)扛施;如果是1,則說明IP轉(zhuǎn)發(fā)功能已經(jīng)打開鸿捧。
net.ipv4.ip_forward的多種配置方式:
臨時(shí)生效的配置方式,在系統(tǒng)重啟疙渣,或?qū)ο到y(tǒng)的網(wǎng)絡(luò)服務(wù)進(jìn)行重啟后都會(huì)失效匙奴。這種方式可用于臨時(shí)測(cè)試、或做實(shí)驗(yàn)時(shí)使用妄荔。
1泼菌、使用 sysctl 指令配置
sysctl 命令的 -w 參數(shù)可以實(shí)時(shí)修改Linux的內(nèi)核參數(shù)谍肤,并生效。所以使用如下命令可以開啟Linux的路由轉(zhuǎn)發(fā)功能哗伯。
sysctl -w net.ipv4.ip_forward=1
2荒揣、修改內(nèi)核參數(shù)的映射文件:/proc/sys/net/ipv4/ip_forward
內(nèi)核參數(shù)在Linux文件系統(tǒng)中的映射出的文件:/proc/sys/net/ipv4/ip_forward中記錄了Linux系統(tǒng)當(dāng)前對(duì)路由轉(zhuǎn)發(fā)功能的支持情況。文件中的值為0,說明禁止進(jìn)行IP轉(zhuǎn)發(fā)焊刹;如果是1,則說明IP轉(zhuǎn)發(fā)功能已經(jīng)打開系任。
永久生效的配置方式,在系統(tǒng)重啟伴澄、或?qū)ο到y(tǒng)的網(wǎng)絡(luò)服務(wù)進(jìn)行重啟后還會(huì)一直保持生效狀態(tài)赋除。這種方式可用于生產(chǎn)環(huán)境的部署搭建。
1非凌、修改/etc/sysctl.conf 配置文件
在sysctl.conf配置文件中有一項(xiàng)名為net.ipv4.ip_forward的配置項(xiàng)举农,用于配置Linux內(nèi)核中的net.ipv4.ip_forward參數(shù)。其值為0,說明禁止進(jìn)行IP轉(zhuǎn)發(fā)敞嗡;如果是1,則說明IP轉(zhuǎn)發(fā)功能已經(jīng)打開颁糟。
需要注意的是,修改sysctl.conf文件后需要執(zhí)行指令sysctl -p后新的配置才會(huì)生效喉悴。
2棱貌、修改/etc/sysconfig/network配置文件
在文件最后添加一行:FORWARD_IPV4=YES
需要注意的是,修改/etc/sysconfig/network配置文件后需要重啟網(wǎng)絡(luò)服務(wù)(service netwrok restart)才能使新的配置生效箕肃。