1. 程式人生 > 其它 >armLinux的iptables轉發,實現路由器功能

armLinux的iptables轉發,實現路由器功能

iptables的轉發實現ip地址實際訪問地址的轉發。

路由器功能,看做將一個網絡卡作為wan口,一個網絡卡作為lan口。wan口配置到外網,實現網際網路的接入。lan口重新分配本地ip段,實現本地連線。

再將lan口的ip通過iptables轉發到wan口,實現lan口接入網際網路。

1. iptables功能的核心支援:

第一步,選中Networking support (按Y)

第二步,回車進入Networking support ,再進入Networking options

第三步,選中下面的選項(按Y)

第四步,按回車進入到core Netfilter configuration (按Y)

第五步,core Netfilter configuration選擇如下選項:

第六步,進入到 IP:Netfilter Configuration

第七步,選擇IP:Netfilter Configuration 的如下選項:

注意:千萬不要將這些選項一股腦全部勾選,有些功能用不到,而且選多了會造成核心不穩定,突然就跑飛了的情況。親歷過那種找問題的過程。

到此內配置完畢,需要重新編譯核心移植到開發板。

2. 下載iptables命令原始碼,移植一個iptables指令。

我下載的是1.4.7版本。

編譯之後,iptables指令是連線到iptables-multi的,直接拷貝iptables-multi指令,作為iptables使用。

3. 板端的實際配置和應用。

兩個wlan裝置,wlan0和wlan1 。

我這裡wlan1 作為wan口,配置其連線到外網,從外網端分配的IP地址為192.168.0.133

waln0作為lan口,hostapd起AP模式,udhcpd配置自動分配IP。

可以看到wan口,lan口的ip完全不在同一個網段。

配置lan口能上網,此時需要執行如下兩條指令:

#開啟ip_forward轉發功能

echo 1 > /proc/sys/net/ipv4/ip_forward

#lan口ip轉發到wan口

/apps/iptables -t nat -A POSTROUTING -s 172.16.11.0/24 -j SNAT --to 192.168.0.133

到此可以ping通wan口閘道器,192.168.0.1

但是還是不能上網。

需要配置DNS伺服器:我配置的是如下兩個,可以配置到udhcpd.conf檔案裡面,自動給接入lan口的裝置,分配DNS

114.114.114.114

8.8.8.8

到此接入lan口的裝置可以通過arm板訪問外網。板也實現了一個簡單的路由功能。