Cách tạo OpenVPN để nghe cả cổng TCP và UDP


13

Tôi đã tìm kiếm xung quanh và điều duy nhất tôi tìm thấy là "có, OpenVPN hỗ trợ các kết nối qua TCP" , nhưng tôi không tìm thấy cách nào để ép buộc máy chủ openvpn nghe cùng một cổng cho cả hai giao thức cùng một lúc . Tôi đã tìm thấy một số hướng dẫn rất cũ về việc tạo giao diện nhấn hoặc khuyên nên có một phiên bản khác của máy chủ có cùng cấu hình chạy cùng một lúc. Cái trước trông quá phức tạp cho một cái gì đó đơn giản, và cái sau có vẻ lỗi thời.

Câu trả lời:


11

Quá trình openvpn tương tự không thể nghe trên các ổ cắm UDP và TCP cùng một lúc.

Bạn có hai lựa chọn tốt:

  1. sử dụng hai giao diện tap cho openvpn. Có hai quy trình máy chủ openvpn, một cho mỗi giao diện nhấn; một cái nên nghe trên UDP, cái kia trên TCP. Cầu hai giao diện tap trên máy chủ.

  2. sử dụng hai giao diện điều chỉnh. Chúng không thể được bắc cầu, vì vậy nếu bạn muốn chia sẻ không gian IP giữa các máy khách TCP và UDP, bạn sẽ cần sử dụng learn-addresstập lệnh như tập lệnh tại http://thomas.godeneur.name/2014/02/openvpn- nghe-on-tcp-và-udp-with-tun / (tuy nhiên, tập lệnh cụ thể này dễ bị tấn công / tmp symlink, vì vậy hãy xóa đăng nhập vào / tmp nếu bạn sử dụng nó).

Tùy chọn thứ ba là chỉ chạy hai trường hợp openvpn và gán không gian IP máy khách riêng biệt cho cả hai (ví dụ: một / 25 từ cùng / 24 mạng con mỗi mạng). Điều này tránh việc bắc cầu và sự cần thiết của một kịch bản địa chỉ học.

EDIT: vì tôi cần một kịch bản địa chỉ học như vậy, tôi đã viết một kịch bản. Tôi đặt nó trong phạm vi công cộng.

#!/bin/sh
#
# This script allows an openvpn server with several openvpn instances that
# use tun interfaces to share client IP space by adjusting the routing table
# to create entries towards specific clients as needed

action="$1"
addr="$2"
cn="$3" # not used, but it's there; you could e.g. log it

case "$action" in
        add)
                echo "sudo ip ro add $addr/32 dev $dev" >&2
                exec sudo ip ro add $addr/32 dev $dev
                ;;
        delete)
                echo "sudo ip ro del $addr/32 dev $dev" >&2
                sudo ip ro del $addr/32
                exit 0 # ignore errors
                ;;
        update)
                echo "sudo ip ro change $addr/32 dev $dev" >&2
                exec sudo ip ro change $addr/32 dev $dev
                ;;
esac

Kịch bản lệnh này ghi vào stderr, sẽ kết thúc trong nhật ký openvpn.


4

Nếu bạn muốn máy chủ OpenVPN của bạn nghe trên cổng TCP thay vì cổng UDP, hãy sử dụng proto tcpthay vì proto udp(Nếu bạn muốn OpenVPN nghe trên cả cổng UDP và TCP, bạn phải chạy hai phiên bản OpenVPN riêng biệt).

Bạn có nghĩa là trang này đã lỗi thời?

Tôi nghĩ rằng bạn có thể chạy hai máy chủ OpenVPN (một cho TCP, một cho UDP,) kết nối mỗi máy chủ với một TUN và sau đó kết nối các TUN.


1
tuncác giao diện không có lớp MAC và do đó không thể là thành viên của một cây cầu. Nếu bạn muốn bắc cầu, bạn cần sử dụng tapgiao diện.
András Korn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.