Linux

如何讓 OpenVPN 客戶端 (Mikrotik RouterOS) <-> OpenVPN 伺服器 (Debian/Linux) 設置工作

  • January 8, 2020

我在讓 MT 與 OpenVPN 伺服器 (Debian) 一起工作時遇到了一些問題。我可以成功連接到 OVPN 伺服器,但流量沒有通過 OVPN 伺服器路由。這是我的配置。

設置 - http://i.imgur.com/WvbjQaj.jpg

OpenVPN 伺服器 (Debian/Linux) 配置

# cat /etc/openvpn/server.conf
本地 95.2.171.3
埠 1194
原型 tcp
開發屯

ca ca.crt
證書伺服器.crt
密鑰伺服器.key
dh dh.pem

伺服器 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

客戶端配置目錄 ccd
路線 192.168.81.0/24 255.255.255.0

保活 10 120
屯門 1500
mssfix 1450

密碼AES-256-CBC
身份驗證 sha1

持久鍵
堅持頓

狀態 /var/log/openvpn-status.log
日誌附加 /var/log/openvpn.log

動詞 5
crl-驗證 /etc/openvpn/easy-rsa/pki/crl.pem

# 貓 /etc/openvpn/ccd/client
iroute 192.168.81.0 255.255.255.0 10.8.0.2
ifconfig-push 10.8.0.2 10.8.0.1

# cat /proc/sys/net/ipv4/ip_forward
1

# netstat -an | grep 1194
tcp 0 0 95.2.171.3:1194 0.0.0.0:* 聽
tcp 0 0 95.2.171.3:1194 81.190.190.100:62973 已建立

# 如果配置
eth0 鏈路封裝:乙太網 HWaddr 20:cf:30:f2:a8:76
inet 地址:95.2.171.3 廣播:95.2.171.31 遮罩:255.255.255.224
inet6 地址:fe80::22cf:30ff:fef2:a876/64 範圍:連結
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX 數據包:255189 錯誤:0 丟棄:0 超限:0 幀:0
TX 數據包:333054 錯誤:0 丟棄:0 超限:0 運營商:0
碰撞:0 txqueuelen:1000
RX 字節:34521411 (32.9 MiB) TX 字節:367074147 (350.0 MiB)
中斷:26 基地址:0x8000

lo 鏈路封裝:本地環回
inet 地址:127.0.0.1 遮罩:255.0.0.0
inet6 地址::::1/128 範圍:主機
上環回執行 MTU:16436 指標:1
RX 數據包:15579 錯誤:0 丟棄:0 超限:0 幀:0
TX 數據包:15579 錯誤:0 丟棄:0 超限:0 運營商:0
碰撞:0 發送隊列:0
RX 字節:1326071 (1.2 MiB) TX 字節:1326071 (1.2 MiB)

tun0 鏈路封裝:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet 地址:10.8.0.1 PtP:10.8.0.2 遮罩:255.255.255.255
UP POINTOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX 數據包:57 錯誤:0 丟棄:0 超限:0 幀:0
TX 數據包:6 錯誤:0 丟棄:0 超限:0 運營商:0
碰撞:0 發送隊列:100
RX 字節:6669 (6.5 KiB) TX 字節:504 (504.0 B)

# 網路統計 -rn
核心IP路由表
目標網關 Genmask 標誌 MSS 視窗 irtt Iface
10.8.0.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
95.2.171.0 0.0.0.0 255.255.255.224 U 0 0 0 eth0
192.168.81.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
0.0.0.0 95.2.171.30 0.0.0.0 UG 0 0 0 eth0

# iptables -S
-P 輸入接受
-P 轉發接受
-P 輸出接受
-A 輸入 -i lo -j 接受
-A INPUT -d 127.0.0.0/8 -i !lo -j REJECT --reject-with icmp-port-unreachable
-A 輸入 -i tun0 -j 接受
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A 輸入 -p tcp -m tcp --dport 1194 -j 接受
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied:" --log-level 7
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A 輸出 -j 接受

# iptables -t nat -S
-P 預路由接受
-P 後路由接受
-P 輸出接受
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 95.2.171.3
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 95.2.171.3
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source 95.2.171.3

# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) 字節數據。
來自 8.8.8.8 的 64 個字節:icmp_req=1 ttl=55 time=12.9 ms
來自 8.8.8.8 的 64 字節:icmp_req=2 ttl=55 time=12.8 ms

這是我在 OpenVPN Server (Debian/Linux) 上的所有配置。

OpenVPN 客戶端(Mikrotik RouterOS 6)配置

/界面列印
標誌:D - 動態,X - 禁用,R - 執行,S - 從
# NAME TYPE ACTUAL-MTU L2MTU MAX-L2MTU MAC-ADDRESS
0 R ether1 ether 1500 1600 4076 D4:CA:6D:31:14:F4
1 S 乙太 2 乙太 1500 1598 2028 D4:CA:6D:31:14:F5
2 乙醚 3 乙醚 1500 1598 2028 D4:CA:6D:31:14:F6
3 S 乙太 4 乙太 1500 1598 2028 D4:CA:6D:31:14:F7
4 S 乙太5 乙太 1500 1598 2028 D4:CA:6D:31:14:F8
5 RS wlan1 wlan 1500 1600 D4:CA:6D:31:14:F9
6 R 橋1 橋1500 1598 D4:CA:6D:31:14:F5
7 R ovpn-out1 ovpn-out 1500 FE: 3E: 27: 7D: 61: 8C

/interface 橋接列印
標誌:X - 禁用,R - 正在執行
0 R name="bridge1" mtu=auto actual-mtu=1500 l2mtu=1598 arp=enabled mac-address=D4:CA:6D:31:14:F5 protocol-mode=rstp priority=0x8000 auto-mac=yes admin -mac=00:00:00:00:00:00 max-message-age=20s forward-delay=15s transmit-hold-count=6 老化時間=5m

/interface 橋接埠列印
標誌:X - 禁用,I - 不活動,D - 動態
# INTERFACE BRIDGE PRIORITY PATH-COST HORIZON
0 I ether2 bridge1 0x80 10 無
1 I ether3 bridge1 0x80 10 無
2 I ether4 bridge1 0x80 10 無
3 I ether5 bridge1 0x80 10 無
4 wlan1 bridge1 0x80 10 無

/ip 地址列印
標誌:X - 禁用,I - 無效,D - 動態
# 地址網路介面
0 192.168.81.1/24 192.168.81.0 橋1
1 D 192.168.7.200/24 192.168.7.0 乙太1
2 D 10.8.0.2/32 10.8.0.1 ovpn-out1

/ip 防火牆 nat 列印
標誌:X - 禁用,I - 無效,D - 動態
0 鏈=srcnat 動作=偽裝到地址=0.0.0.0 出介面=ether1 日誌=無日誌前綴 =“”

/ip 路由列印
標誌:X - 禁用,A - 活動,D - 動態,C - 連接,S - 靜態,r - rip,b - bgp,o - ospf,m - mme,B - 黑洞,U - 無法訪問,P - 禁止
# DST-ADDRESS PREF-SRC 網關距離
0 ADS 0.0.0.0/0 192.168.7.1 0
1 ADC 10.8.0.1/32 10.8.0.2 ovpn-out1 0
2 ADC 192.168.7.0/24 192.168.7.200 乙太1 0
3 ADC 192.168.81.0/24 192.168.81.1 橋1 0

/interface ovpn-client 列印
標誌:X - 禁用,R - 正在執行
0 R name="ovpn-out1" mac-address=FE:3E:27:7D:61:8C max-mtu=1500 connect-to=195.13.171.3 port=1194 mode=ip user="client" password=" " 配置文件 = 預設證書 = 客戶端身份驗證 = sha1 密碼 = aes256 添加預設路由 = 否

/ping 10.8.0.1
SEQ 主機大小 TTL 時間狀態
0 10.8.0.1 56 64 6ms
1 10.8.0.1 56 64 9ms
2 10.8.0.1 56 64 7ms
3 10.8.0.1 56 64 6ms
發送=4 接收=4 丟包=0% min-rtt=6ms avg-rtt=7ms max-rtt=9ms

如您所見,我可以從 Mikrotik ping OpenVPN 伺服器。但是當我從本地 PC 使用網際網路時,它顯示 81.190.190.100 IP 地址,而不是我想看到的那個 - OpenVPN 伺服器 IP - 95.2.171.3。

我可以從筆記型電腦(192.168.81.100/24)成功 ping/traceroute 到 10.8.0.1,但不明白為什麼它沒有通過 VPN 隧道路由。我想我在伺服器(Linux)或客戶端(mikrotik)上都缺少路由。

謝謝你的幫助!我現在玩這個有一段時間了,不能讓它執行:(

祝你有美好的一天!

您的客戶端沒有通過 OVPN 隧道路由,因為 mikrotik 上沒有路由(預設網關)!

因此,在 mikrotik 上添加另一個網關,其路由標記為 OVPN 伺服器 10.8.0.1

/ip route add dst-address=0.0.0.0/0 gateway=10.8.0.1 routing-mark=clientmark

當然,您應該為路由標記添加一個 mangle 規則,例如:

/ip firewall mangle add action=mark-routing chain=prerouting src-address=192.168.81.0/24 new-routing-mark=clientmark

還應該有一個客戶端(src-addresses 192.168.81.0/24)的nat規則。

ip firewall nat add action=masquerade chain=srcnat src-address=192.168.81.0/24 out-interface=ovpn-out1

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