編輯:我是網路和發現新事物的新手:)
我以程式設計方式建立了一個 TUN 介面並能夠與之互動。
我設定並運行
ifconfig myTun 10.10.1.1/24 up
正如我在ifconfig
ping中看到的那樣,它已啟動並正在運行10.10.1.1
為了 100% 確定我的 TUN 介面是否已啟動並執行我的書面問題,我執行了以下操作:
我進行了 ping 操作10.10.1.2
,程式中收到了資料包,我將其寫回 tun,然後在循環中再次收到它。
現在我確定所有資料包從或者到 10.10.1.x
正在被 TUN 接收並寫入,沒有任何問題。
當我寫一個資料包時任何外部目標IP它10.10.1.x
已成功寫入 TUN,但沒有收到 TUN 的答案。
在搜尋和閱讀大量文章後,我認為它已被內核悄悄刪除。
我在 serverfault.com 上閱讀了很多關於 TUN 介面的 Q/A,我發現我錯過了邏輯中的一個重要部分,即路由。
我的最終理解是:資料包正常並被Linux中的網路堆疊接收,但核心不知道如何處理資料包,因為它的目的地很奇怪。然後我發現我必須為核心指定一些路由iptables並啟用net.ipv4.ip_forward
但不知道如何啟用。
我的最終目標是:
當我將任何目的地為 TUN 之外的任何數據包發送到TUN 時10.10.1.x
,它必須路由到我的主接口(可以訪問互聯網,並且是wlps020f3
),並且該數據包的任何結果都會接收回我的 TUN 接口
如何配置網路位址轉換在iptables解決方法?
先謝謝了