Routing

Mikrotik - 大量 tcp 重傳數據包

  • January 23, 2020

我有一個 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

引用自:https://serverfault.com/questions/984184