Routing
Mikrotik - 大量 tcp 重傳數據包
我有一個 IP 為 192.168.10.144 的 ubuntu 伺服器,在這個伺服器中我有一個使用 IP 範圍 10.0.0.0/24 的 docker 網路。我需要將我的電腦連接到在 docker 中執行的一些服務,所以我在 Mikrotik 中添加了一條路由:
# DST-ADDRESS PREF-SRC GATEWAY DISTANCE 0 ADS 0.0.0.0/0 192.168.0.1 1 1 A S 10.0.0.0/24 192.168.10.144 1 2 ADC 192.168.0.0/24 192.168.0.3 ether1-internet 0 3 ADC 192.168.10.0/24 192.168.10.1 ether2-proliant 0
但是,我的電腦和 docker 服務之間的連接非常慢。我用wireshark檢查發生了什麼,發現了一些tcp-restransmission消息:
我雖然 nat 規則可以解決問題,但是當使用以下規則時,我的電腦和 docker 之間沒有進行通信:
0 ;;; default configuration chain=srcnat action=masquerade out-interface=ether1-internet log=no log-prefix="" 1 chain=dstnat action=dst-nat to-addresses=192.168.10.144 to-ports=80 protocol=tcp dst-port=8000 log=no log-prefix="" 2 X chain=dstnat action=dst-nat to-addresses=192.168.10.144 protocol=tcp dst-address=10.0.0.0/24 log=no log-prefix="" 3 X chain=srcnat action=src-nat to-addresses=10.0.0.0/24 protocol=tcp src-address=192.168.10.144 log=no log-prefix=""
我究竟做錯了什麼?
我只是刪除了 nat 規則並添加了一個偽裝規則:
[admin@MikroTik] /ip firewall nat> print Flags: X - disabled, I - invalid, D - dynamic 0 ;;; default configuration chain=srcnat action=masquerade out-interface=ether1-internet log=no log-prefix="" 1 chain=dstnat action=dst-nat to-addresses=192.168.10.144 to-ports=80 protocol=tcp dst-port=8000 log=no log-prefix="" 2 chain=srcnat action=masquerade dst-address=10.0.0.0/24 log=no log-prefix=""
現在一切都按預期工作。
您的 PC 的 IP 地址為 192.168.10.53?您通過預設網關 - 192.168.10.1 將流量發送到主機 10.0.0.77。您的路由器將 ICMP 重定向數據包發回給您。您可以在此處閱讀更多相關資訊:https ://www.cisco.com/c/en/us/support/docs/ip/routing-information-protocol-rip/13714-43.html
您可能會遇到類似於此處描述的問題:https ://forum.mikrotik.com/viewtopic.php?t=139465
可能的解決方案:在您的 PC 上設置靜態路由:
10.0.0.0/24 via 192.168.10.144