ubuntu 設置 NAT 轉發


針對需求

嵌入式開發中,經常使用板子和筆記本通過網線直連,如果需要板子連接到外網,就比較尷尬。

最簡單方法,可以把板子接到局域網內,我們的筆記本通過局域網交換機連接到板子,可是,這樣要很多修改 IP 的操作;通常情況下,這時,你還需要一台小交換機和幾根網線在你桌子上。很麻煩對不對?

這里提供了一個替代方法:可以配置筆記本 IPV4 轉發,筆記本用 Wi-Fi 來連接到網絡,然后,板子與筆記本有線連接的情況下,板子可以通過筆記本連接到外網。

大致如下圖:

 

開發板修改

1. 修改開發板 /etc/network/interface 文件,主要將 gateway 改為筆記本 IP。

2. 重新插拔網線讓配置生效。(可以ifdown后ifup,插拔網線更快些 :)

 

筆記本(ubuntu,均需本機 root 權限):

1. 使能本機的 ip_forward :  echo 1 > /proc/sys/net/ipv4/ip_forward

2. 設置 iptables 規則:

  •  清除所有規則: iptables -F
  • 因為清除了所有,所以需要先允許 INPUT: iptables -P INPUT ACCEPT
  • 還需要允許 FORDWARD: iptables -P FORWARD ACCEPT
  • 允許 NAT 轉發所有包到 wlan0:iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

 

可以使用下面兩條指令來查看配置是否有效:

1. 如果 ip_forward 是打開的,則輸出 1: cat /proc/sys/net/ipv4/ip_forward

2. iptables -nvL 看有哪些規則

 

如果是只有一個網口的台式機,沒辦法,那你還是乖乖的找交換機和網線去吧~!

 

搞了個腳本,免得每次手動敲:

#!/usr/bin/env bash

if [ -z $1 ]; then
    echo "usage: forward_to [eth0|wlan0]"
    exit 1
fi

if [ $(id -u) -ne 0 ]; then
    echo "Re-running script under sudo..."
    sudo "$0" "$@"
    exit 1
fi

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

iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o $1 -j MASQUERADE

#dhcpd eth0 -pf /var/run/dhcp-server/dhcpd.pid

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM