如何在兩個介面之間轉送封包?

如何在兩個介面之間轉送封包?

eth0我的筆記型電腦(使用 Ubuntu 13.10)使用帶有 ip 的有線連接連接到互聯網192.168.42.13,它也充當帶有 ip 的wifi hotspotat (我使用 airbase-ng 來設定 ap)。現在我有一個 Android 裝置需要連接到該 wifi。我看到我的 Android 能夠連接到我設定的伺服器並接收以下網路設定。 (我使用了一個工具調用wlan0192.168.1.1hotspotdhcp網路資訊二從 PlayStore 在我的 Android 上查看以下詳細資訊)。

# My android network settings (connected to the wlan0 of my laptop):
ip address: 192.168.1.10
subnetmask: 255.255.255.0
gateway   : 192.168.1.254
ap-mac    : xx:xx:xx:xx:xx:xx

# My pc's eth0 configuration
ip address: 192.168.42.13
submetmask: 255.255.255.0
gateway   : 192.168.42.129
iface mac : yy:yy:yy:yy:yy:yy

# My pc's wlan0 (hotspot interface) configuration
ip address: 192.168.1.1
subnetmask: 255.255.255.0
gateway   : 192.168.1.1
iface mac : zz:zz:zz:zz:zz:zz

這個線程這裡談論類似的問題。我發現我需要在網路之間轉送封包,eth0wlan0將無線存取點的裝置連接到網際網路。現在如何轉發我收到的資料包wlan0 to eth0並將eth0 to wlan0我的裝置連接到網路?

答案1

您首先需要在系統上啟用 IP 轉送。若要只執行一次,請使用

sysctl -w net.ipv4.ip_forward=1

或者

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

作為根。如果您想使其永久,請編輯

/etc/sysctl.conf

並添加一行包含

net.ipv4.ip_forward = 1

這將在重新啟動或運行時應用

sysctl -p /etc/sysctl.conf

完成後,您可能需要 NAT 連接,因為您的路由器不太可能知道可以透過 192.168.42.13 存取 192.168.1.0/24 網路。如果 192.168.42.13 是靜態的,您可以使用

iptables -t nat -A POSTROUTING -i wlan0 -s 192.168.1.0/24 -j SNAT --to-source 192.168.42.13

否則使用

iptables -t nat -A POSTROUTING -i wlan0 -s 192.168.1.0/24 -j MASQUERADE

檢查Ubuntu Iptables 方法了解如何在重新啟動時儲存這些規則。

相關內容