Skip to content

OpenVPN — mihomo

mihomo می‌تواند یک سرور OpenVPN را به‌عنوان خروجی شماره‌گیری کند و یک کلاینت فضای-کاربر را اجرا کند که یک دستگاه پشتهٔ tun-گونه برپا می‌کند و ترافیک تطبیق‌یافته را از طریق تونل رمزنگاری‌شده مسیریابی می‌کند. کانال کنترل با گواهی‌ها (ca / cert / keytls-crypt اختیاری، و/یا اعتبارنامه‌های auth-user-pass احراز هویت می‌شود؛ کانال داده با cipher توافق‌شده رمزنگاری می‌شود.

خروجی

ورودی زیر proxies: با type: openvpn. این BasicOption (فیلدهای مشترک خروجی) را در خود جای می‌دهد.

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
namestring(required)<string>نام یکتای پراکسی.
serverstring(required)<host>میزبان/IP سرور OpenVPN.
portint(required)<port>پورت سرور.
protostringudpudp | tcpپروتکل ترابرد تونل OpenVPN.
devstringtuntunنوع دستگاه مجازی (مثلاً `tun`).
cipherstring(server-negotiated)AES-256-GCM | AES-128-GCM | <cipher>رمز کانال داده، مثلاً `AES-256-GCM`.
authstring(unset)SHA256 | SHA512 | <digest>خلاصه‌سازِ HMAC برای کانال کنترل، مثلاً `SHA256`.
comp-lzostring(unset)yes | no | adaptiveتنظیم فشرده‌سازی LZO.
castring(required)<PEM>گواهی CA (به‌صورت PEM، درون‌خطی یا مسیر فایل).
certstring(unset)<PEM>گواهی کلاینت (PEM).
keystring(unset)<PEM>کلید خصوصی کلاینت (PEM).
tls-cryptstring(unset)<key>کلید ثابت tls-crypt برای رمزنگاری/احراز هویت کانال کنترل.
usernamestring(unset)<string>نام کاربری auth-user-pass.
passwordstring(unset)<string>گذرواژهٔ auth-user-pass.
pingint(unset)<seconds>بازهٔ پینگ نگه‌دارنده (ثانیه).
ping-restartint(unset)<seconds>پس از این تعداد ثانیه بدون پینگ، تونل را راه‌اندازی مجدد کن (ثانیه).
mtuint1500<integer>MTU تونل.
udpboolfalsetrue | falseاجازهٔ عبور ترافیک UDP از پراکسی.
remote-dns-resolveboolfalsetrue | falseحل نام‌های مقصد با استفاده از DNS تونل.
dns[]string[][<server>]سرورهای DNS مورد استفاده برای تونل.

منبع: adapter/outbound/openvpn.go:43-66 · ثابت‌شده در v1.19.27 (5184081)

مثال‌ها

خروجی — احراز هویت با گواهی:

yaml
proxies:
  - name: ovpn-cert
    type: openvpn
    server: vpn.example.com
    port: 1194
    proto: udp
    cipher: AES-256-GCM
    auth: SHA256
    ca: |
      -----BEGIN CERTIFICATE-----
      <ca-certificate>
      -----END CERTIFICATE-----
    cert: |
      -----BEGIN CERTIFICATE-----
      <client-certificate>
      -----END CERTIFICATE-----
    key: |
      -----BEGIN PRIVATE KEY-----
      <client-private-key>
      -----END PRIVATE KEY-----
    udp: true

خروجی — احراز هویت با نام کاربری/گذرواژه به‌همراه نگه‌دارنده:

yaml
proxies:
  - name: ovpn-userpass
    type: openvpn
    server: vpn.example.com
    port: 1194
    proto: tcp
    ca: |
      -----BEGIN CERTIFICATE-----
      <ca-certificate>
      -----END CERTIFICATE-----
    username: <username>
    password: <password>
    ping: 10
    ping-restart: 60
    udp: true

نکات

  • proto ترابرد لینک را انتخاب می‌کند: udp (پیش‌فرض) یا tcp. مقدار cipher کانال داده با سرور توافق می‌شود؛ آن را به‌طور صریح تنظیم کنید تا مقداری مانند AES-256-GCM را ثابت نگه دارید.
  • ca الزامی است. cert + key احراز هویت با گواهی را فراهم می‌کنند؛ username + password احراز هویت auth-user-pass را فراهم می‌کنند. هنگامی که سرور هر دو را نیاز داشته باشد می‌توان آن‌ها را ترکیب کرد. مواد PEM ممکن است به‌صورت درون‌خطی (اسکالر بلوکی) یا به‌صورت مسیر فایل داده شوند.
  • tls-crypt کلید ثابتی را تأمین می‌کند که کانال کنترل را رمزنگاری و احراز هویت می‌کند و دست‌دهی OpenVPN را پنهان می‌سازد.
  • ping یک پینگ نگه‌دارنده را در بازهٔ داده‌شده ارسال می‌کند؛ ping-restart تونل را پس از آن تعداد ثانیه بدون دریافت بسته، برچیده می‌کند تا بتوان آن را دوباره برقرار کرد. هر دو بر حسب ثانیه بیان می‌شوند.
  • mtu مقدار MTU تونل را تنظیم می‌کند و پیش‌فرض آن 1500 است.
  • remote-dns-resolve جستجوهای نام مقصد را از طریق تونل و با استفاده از سرورهای فهرست‌شده در dns مسیریابی می‌کند؛ این گزینه تا زمانی که dns ناتهی نباشد هیچ اثری ندارد.

نکات بین‌هسته‌ای

  • OpenVPN در میان این سه هسته مخصوص mihomo است. نه Xray-core و نه sing-box خروجی OpenVPN ارائه نمی‌دهند — برای پل‌زدن یک نقطه‌انتهایی OpenVPN با آن هسته‌ها باید یک کلاینت OpenVPN جداگانه اجرا کنید و یک ورودی socks/http یا TUN را به آن اشاره دهید.

منبع: adapter/outbound/openvpn.go:43-66 · v1.19.27 (5184081)

Core Tutorial اثر Argsment