เราเตอร์ Banana Pi R64 - Debian, Wireguard, RKN

Banana Pi 64 เป็นคอมพิวเตอร์บอร์ดเดียวที่คล้ายกับ Raspberry Pi แต่มีพอร์ตอีเธอร์เน็ตหลายพอร์ต ทำให้เป็นเราเตอร์การกระจาย Linux ที่ใช้งานทั่วไป

เราเตอร์ Banana Pi R64 - Debian, Wireguard, RKN

ใช่ Openwrt มีอยู่แล้ว แต่มี GUI และ CLI เป็นของตัวเอง มี Mikrotik แต่ก็มี GUI / CLI ของตัวเองอีกครั้งและ Wireguard ไม่ทำงานนอกกรอบ ... โดยทั่วไปฉันต้องการเราเตอร์ที่มีการตั้งค่าที่ยืดหยุ่นในขณะที่ยังคงอยู่ในกรอบของ Linux มาตรฐานที่คุณทำงานด้วย ทุกวัน.

ในบทความภายใต้ชื่อ BPI, R64, single-board ฉันจะหมายถึงสิ่งเดียวกัน - Banana Pi R64 single-board เอง

การเลือกรูปภาพ ดาวน์โหลดผ่าน eMMC

ทักษะแรกที่ได้รับเมื่อทำงานด้วย SBC โดยทั่วไป และโดยเฉพาะอย่างยิ่งกับ R64 นั้นหมายถึงการเรียนรู้วิธีโหลดระบบปฏิบัติการลงในระบบปฏิบัติการและสามารถโต้ตอบกับมันได้ เนื่องจาก R64 ไม่มีพอร์ตมอนิเตอร์ (เช่น HDMI) เมื่อทุกอย่างหยุดทำงาน - Wifi หยุดทำงาน, เครือข่ายอีเธอร์เน็ต, บลูทู ธ, USB และอื่น ๆ มี UART ผ่านทางอินเทอร์เฟซซึ่งคุณสามารถดูสิ่งที่ผิดพลาดได้ตลอดเวลาและเรียกใช้คำสั่งสองสามคำสั่งจากคอนโซลหากจำเป็น

อัลกอริทึมการเชื่อมต่อกับ R64 ผ่าน USB-UART:

  • วิ่งไปที่ร้านอะไหล่วิทยุสำหรับสาย USB-UART (PL2303, Serial-to-USB)
  • เราเชื่อมต่อปลาย USB ด้านหนึ่งเข้ากับคอมพิวเตอร์และอีกด้าน UART กับ R64 โดยใช้สายสามในสี่สายดังภาพด้านล่าง
  • ในการเรียกใช้คอนโซลคอมพิวเตอร์ sudo minicom

หลังจากนั้น ในกรณีส่วนใหญ่ คอนโซลเดี่ยวจะปรากฏขึ้น = สำเร็จ
สามารถดูรายละเอียดเพิ่มเติมได้ ที่นี่.

เราเตอร์ Banana Pi R64 - Debian, Wireguard, RKN

ต่อไป วิธีที่ง่ายที่สุดคือการโหลดระบบปฏิบัติการจากการ์ด SD: ดาวน์โหลดโดย ลิงค์ รูปภาพและอัปโหลด:

unzip -p 2019-08-23-ubuntu-16.04-lite-preview-bpi-r64-sd-emmc.img.zip | pv | sudo dd of=/dev/mmcblk0 bs=10M status=noxfer

เราใส่การ์ดลงในสล็อต R64 SD เปิดเครื่อง สังเกตการโหลด uboot บนคอนโซลที่เชื่อมต่อก่อน จากนั้นจึงบูต Linux มาตรฐาน

ตัวเลือกการบู๊ตทางเลือกคือการใช้การ์ด 64Gb ที่ฝังอยู่ใน R8 ซึ่งเรียกว่า eMMC ตามคำแนะนำใน wiki เราเขียนรูปภาพใหม่ลงในอุปกรณ์
/dev/mmcblk0 เป็น BPI, รีบูต, ลบการ์ด SD, เปิดใช้งาน BPI อีกครั้ง... และใช้งานไม่ได้ วิธีการเดินทาง Boot select อย่ารอช้า

ความจริงก็คืออย่างน้อยสำหรับ BPI คุณต้องตั้งค่าสถานะพิเศษเพื่อให้สามารถบู๊ตจากแฟลชไดรฟ์ภายในได้:

root@bpi-r64:~# ./mmc extcsd read /dev/mmcblk1 | grep 'PARTITION_CONFIG'
Boot configuration bytes [PARTITION_CONFIG: 0x00]
root@bpi-r64:~# ./mmc bootpart enable 1 1 /dev/mmcblk1
root@bpi-r64:~# ./mmc extcsd read /dev/mmcblk1 | grep 'PARTITION_CONFIG'
Boot configuration bytes [PARTITION_CONFIG: 0x48]

ถัดไป คุณต้องเขียนตัวโหลดล่วงหน้าไปยังพาร์ติชันสำหรับเริ่มระบบพิเศษ

root@bpi-r64:~# echo 0 > /sys/block/mmcblk0boot0/force_ro 
root@bpi-r64:~# dd if=preloader_evb7622_64_foremmc.bin of=/dev/mmcblk0boot0

ผู้ผลิต R64 (จีน) โพสต์ไบนารีนี้ ที่นี่. สิ่งที่เขาทำไม่เป็นที่รู้จัก (ไม่มีซอร์สโค้ด) แต่ถ้าไม่มีเขาก็ไม่ทำงานเช่นกัน

โดยทั่วไปแล้ว หลังจากนั้น รูปภาพจะเริ่มโหลดจาก eMMC หากคุณต้องการคิดออกและสร้างรูปภาพตั้งแต่เริ่มต้นสำหรับทั้งสองกรณี (SD / eMMC) คุณต้องเขียนไฟล์เพิ่มอีกสองสามไฟล์ (ตัวโหลดล่วงหน้าสำหรับการ์ด SD, ATF, u-boot) เพื่อไปที่เคอร์เนล บูต หัวข้อนี้ยังคงอยู่ กำลังพัฒนาแต่สำหรับเราสิ่งสำคัญคือมันใช้งานได้และโอเค

เอาตรงๆ ตอนนี้ฉันไม่ได้ใช้การดาวน์โหลด eMMC การ์ด SD ก็เพียงพอแล้ว แต่ฉันใช้เวลาค่อนข้างมากในการทำให้มันใช้งานได้ ดังนั้นปล่อยให้มันอยู่ในบทความ

ทางเลือกของระบบปฏิบัติการ อาร์มเบียน

งานแรกของแอปพลิเคชันคือการเปิดใช้งาน VPN แน่นอนว่า Wireguard ปรากฎว่าไม่ได้ประกอบจากด้านเคอร์เนลและไม่มีส่วนหัว ฉันสร้างเคอร์เนลใหม่และสร้างโมดูลเคอร์เนลโดยใช้ x86 โดยใช้ DKMS อย่างไรก็ตามความเร็วในการประกอบบนแขน 64 ของยูทิลิตี้ขนาดเล็กแม้แต่น้อยก็ทำให้ฉันประหลาดใจ จากนั้นจึงจำเป็นต้องมีโมดูลเคอร์เนลอื่น และอื่น ๆ โดยทั่วไปแล้วปรากฎว่าทุกอย่างที่เกี่ยวข้องกับเคอร์เนลนั้นดีกว่าที่จะประกอบเข้ากับแล็ปท็อป x86 warm-tube จากนั้นถ่ายโอนไปยัง R64 โดยการคัดลอกรีบูตและทดสอบอย่างง่าย

อีกอย่างคือส่วนของ userspace ในกรณีของฉันที่เลือก Debian ทุกอย่างสำหรับสถาปัตยกรรม arm64 อยู่ใน package.debian.org แล้ว และไม่จำเป็นต้องสร้างอะไรใหม่

เพื่อไม่ให้มีการผลิตจักรยานอีก I พอร์ต อาร์มเบียน บน BPI R64
หรือมากกว่านั้น: ส่วน userspace คือ Armbian และแกนหลักนำมาจากที่เก็บ ตรงไปตรงมา-ก. สามารถดาวน์โหลดภาพล่าสุดได้ ที่นี่.

กิจกรรมทั้งหมดเกี่ยวกับการพัฒนาส่วนซอฟต์แวร์ของ R64 นั้นดำเนินต่อไป ฟอรั่ม. โดยทั่วไปแล้วผู้ผลิตเองพยายามทำให้เราเตอร์ Openwrt เป็นที่นิยม แต่ด้วยกิจกรรมของนักพัฒนา Frank จากเยอรมนี ฟีเจอร์ทั้งหมดจึงจบลงอย่างรวดเร็วในเคอร์เนล Debian น่าแปลกที่แฟรงก์มีความเคลื่อนไหวในทุกฟอรัม

องค์กรพื้นที่ทำงาน: สายไฟ

ฉันอยากจะบอกคุณถึงวิธีวาง SBC (ไม่ใช่แค่ BPI) บนโต๊ะในระหว่างการพัฒนา / ทดสอบเพื่อไม่ให้สายอีเธอร์เน็ตจากแหล่งอินเทอร์เน็ตผ่านห้อง / สำนักงานทั้งหมด ความจริงก็คือ ในแง่หนึ่ง คุณต้องจัดหาอินเทอร์เน็ตให้กับชิ้นส่วนเหล็ก และในทางกลับกัน ทุกสิ่งสามารถทำลายได้ในชิ้นส่วนเหล็กนี้ และโดยเฉพาะอย่างยิ่ง Wifi

ก่อนอื่นฉันตัดสินใจซื้อ "นกหวีด" USB-Wifi ราคาถูกเสียบเข้ากับพอร์ตเดียวบน BPI แล้วลืมสายไฟ ในการทำเช่นนี้ฉันซื้อ TP-LINK TL-WN725N USB 2.0 ราคาไม่แพง แต่ในไม่ช้าก็เห็นได้ชัดว่ามันจะไม่ถอดออก: เพื่อให้นกหวีดใช้งานได้จำเป็นต้องมีไดรเวอร์เคอร์เนลซึ่งแน่นอนว่าไม่ได้อยู่ที่นั่น (ภายหลังฉันรวบรวมไดรเวอร์ RTL8XXXU ที่จำเป็น แต่ก็ยังใช้งานไม่ได้) และสายเคเบิลอีเธอร์เน็ตก็ทำลายมุมมองของห้องไปชั่วขณะ

เป็นผลให้ฉันจัดการเพื่อกำจัดสายเคเบิลด้วยความช่วยเหลือของ Tenda MW3 (ระบบตาข่าย Wifi): ฉันเพียงแค่วางลูกบาศก์หนึ่งลูกบาศก์ไว้ใต้โต๊ะและเชื่อมต่อ BPI เข้ากับพอร์ต LAN ของอันหลังด้วยสายอีเธอร์เน็ตแบบมิเตอร์ ความสำเร็จ.

ไวร์การ์ด, RKN, นก

สิ่งหนึ่งที่ฉันใช้ Banana PI คือการเข้าถึงไซต์ที่ถูกบล็อกโดย RKN ได้ฟรี โดยเฉพาะอย่างยิ่ง เพื่อให้ Telegram และการโทรไปยัง Slack ทำงานได้ บทความในหัวข้อนี้ได้รับการเสนอในHabré: เวลา, สอง, สาม.

ฉันดำเนินการปรับใช้โซลูชันดังกล่าวโดยใช้ Ansible: ลิงค์.

VPS ควรจะใช้งาน Ubuntu 18.04 ฉันตรวจสอบประสิทธิภาพของโฮสต์สองแห่งในยุโรป: Amazon และ Digital Ocean

ดังนั้นเราจึงติดตั้ง Armbian ด้านบนบน R64 ซึ่งมีให้ใช้งานผ่าน ssh ภายใต้ชื่อ hm-bananapi-1 และมีอินเตอร์เน็ต เราปรับใช้สคริปต์การทำงานอัตโนมัติตามลำดับและเรียกใช้การติดตั้งเองบน R64:

# зависимости для Debian-based дистрибутивов
$ sudo apt install --no-install-recommends python3-pip python3-setuptools python3-wheel git
$ which pip3
/usr/bin/pip3

# ansible с pybook, скриптование на Python
$ pip3 install https://github.com/muravjov/ansible/archive/ansible-2.10.0.dev0-pybook2019.tar.gz

$ export PATH=~/.local/bin:$PATH
$ which ansible-playbook
/home/sa/.local/bin/ansible-playbook

$ git clone https://github.com/muravjov/ansible-bpi-r64.git
$ cd ansible-bpi-r64

$ git submodule update --init

# убеждаемся в доступности hm-bananapi-1
$ ssh hm-bananapi-1 which python3
/usr/bin/python3

# собственно установка
$ ansible-playbook ./router.py -l hm-bananapi-1

ต่อไป คุณต้องปรับใช้ VPN ของเรากับ VPS ในลักษณะเดียวกัน:

ansible-playbook ./router.py -l current-vpn

ในที่นี้ อาร์กิวเมนต์จะเป็น current-vpn เสมอ และชื่อ VPS เองก็ได้รับการกำหนดค่าในตัวแปร (ในกรณีนี้คือ paris-vpn-aws-t2-micro-1):

$ grep current_vpn group_vars/all 
current_vpn: paris-vpn-aws-t2-micro-1
#current_vpn: frankfurt-vpn-d0-starter-1

ใช่ ก่อนดำเนินการทั้งหมดนี้ คุณต้องสร้างความลับ (โดยเฉพาะ คีย์ Wireguard) ในโฟลเดอร์ ./secretsไดเร็กทอรีควรมีลักษณะดังนี้ ดังนั้น.

ระบบอัตโนมัติ Ansible ใน Python

คุณอาจสังเกตเห็นว่าแทนที่จะใช้รูปแบบ YAML คำสั่ง Ansible จะถูกเข้ารหัสในสคริปต์ Python สำหรับการเปรียบเทียบ วิธีเปิดใช้งานภูตนกด้วยวิธีปกติ:

- name: start bird
  systemd:
    name: bird
    state: started
    enabled: yes

และเหมือนกันผ่าน Python:

with mapping:
    append("name", "start bird")
    with mapping("systemd"):
        append("name",  "bird")
        append("state", "started")
        append("enabled", "yes")

การเขียนคำสั่ง Ansible ด้วยโค้ด Python ช่วยให้คุณนำโค้ดกลับมาใช้ใหม่ได้ และโดยทั่วไปแล้ว ความเป็นไปได้ทั้งหมดของภาษาที่ใช้งานทั่วไปจะเปิดอยู่ ตัวอย่างเช่น การติดตั้ง bird บน R64 และ VPS:

install_bird("router/bird.conf.j2")
install_bird("vpn/bird.conf.j2")

ดูรหัสฟังก์ชัน install_bird().

คุณสมบัตินี้เรียกว่า pybook นำไปใช้ ที่นี่. ยังไม่มีเอกสารเกี่ยวกับ pybook จากนั้นฉันจะแก้ไขข้อบกพร่องนี้

เขาคิดอย่างไร ต้นน้ำลำธาร เกี่ยวกับเรื่องนี้

การตรวจสอบ โพร

ทั้งหมด: โทรเลขใช้งานได้, LinkedIn และ PornHub เช่นกัน โดยทั่วไปแล้วประสบการณ์ของผู้ใช้ก็โอเค แต่ทุกอย่างสามารถแตกหักได้และชิ้นส่วนเหล็กของจีนก็เช่นกัน

การอัปเดตเคอร์เนลก็น่าสนใจเช่นกัน ตัวอย่างเช่น ฉันต้องการอัปเดตเคอร์เนล 5.4 => 5.6 เอาล่ะ มี Wireguard อยู่แล้ว ไม่ต้องแพตช์ ... ไม่พูดเร็วกว่าทำ: ถ่ายโอนแพตช์อย่างระมัดระวังจาก 5.4 เป็น 5.6, เคอร์เนลเริ่มทำงาน, อุโมงค์ไปยัง VPS ส่งคำสั่ง ping แต่นกไม่สามารถเชื่อมต่อกับข้อผิดพลาด "BGP Error"… "ย้อนกลับด้วยความสยดสยอง" (c) เป็น 5.4; การย้ายไปยัง 5.6 ถูกเลื่อนออกไปใน TODO

ดังนั้น นอกเหนือจากการติดตั้งเราเตอร์และ VPS แล้ว ฉันได้เพิ่มการตรวจสอบ (บน x86 Ubuntu 18.04) ซึ่งติดตั้งบนโฮสต์แยกต่างหากโดยมีส่วนประกอบต่อไปนี้:

  • prometheus, alertmanager, blackbox_exporter - ทั้งหมดใน docker
  • การแจ้งเตือนจะถูกส่งไปยังช่องโทรเลขโดยใช้บอท metalmatze/alertmanager-bot - ยังอยู่ในนักเทียบท่า
  • tor สำหรับบอท เพื่อให้บอทสามารถแจ้งเตือนสถานการณ์เมื่อมีอินเทอร์เน็ต แต่โทรเลขยังไม่ทำงาน และบอทเองก็ไม่สามารถเชื่อมต่อได้
  • สมัครแล้ว การแจ้งเตือน: NodeVPNTroubles (ไม่มี ping ไปยัง VPS), BirdVPNTroubles (ไม่มี Bird session), AntifilterDownloadTroubles (ไม่สามารถโหลดที่อยู่ IP ที่ถูกบล็อก), SiteTroubles (โชคไม่ดีที่โทรเลขไม่พร้อมใช้งาน)
  • การแจ้งเตือนระบบเช่น HostGrowingDiskReadLatency (การ์ด SD ราคาถูกหยุดอ่าน)

ตัวอย่างการตั้งค่าการตรวจสอบ:

ansible-playbook ./monitoring.py -l monitoring-preprod

การค้นหาอัตโนมัติสำหรับ prometheus ถูกตั้งค่าเป็นโฟลเดอร์ /etc/prometheus/auto_http ตัวอย่างของการเพิ่มโฮสต์ในการมอนิเตอร์ (โฮสต์จะไม่ถูกมอนิเตอร์ตามค่าดีฟอลต์):

bash << 'EOF'
HOSTNAME=hm-bananapi-1
IP_ADDRESS=`ssh -G $HOSTNAME | awk '/^hostname / { print $2 }'`

ssh monitoring-preprod sudo sponge /etc/prometheus/auto_http/$HOSTNAME.json << EOF2
[
  {
    "targets": ["$IP_ADDRESS:9100"],
    "labels": {
      "env": "prod",
      "hostname": "$HOSTNAME"
    }
  }
]
EOF2
EOF

สิ่งที่ต้องทำ: ผู้ให้บริการ 2 ราย, 2 BPI, เฟลโอเวอร์แบบ anycast

นอกเหนือจากทุกอย่างแล้ว ฉันวางแผนที่จะเชื่อมต่อกับผู้ให้บริการสองรายเพื่อให้อินเทอร์เน็ตทำงานต่อไปได้ แม้ว่าผู้ให้บริการรายหนึ่งจะมีปัญหากับเครือข่าย หรือพวกเขาลืมจ่ายค่าอินเทอร์เน็ต ฯลฯ และปัจจัยอื่นๆ จากมนุษย์

มีการอธิบายประสบการณ์ผู้ใช้ขั้นสูงที่สุดในหัวข้อ multi-wan ที่นี่ สำหรับระบบ Mwan3 ภายใต้ Openwrt โซลูชันนี้มีฟังก์ชันการทำงานที่หลากหลาย แต่การตั้งค่าและการใช้งานโดยทั่วไปสำหรับ multi-wan นั้นค่อนข้างลำบาก เพียงตัวอย่างหนึ่ง: หากคุณมาที่บางไซต์จากสองที่อยู่ IP พร้อมกัน พวกเขาอาจไม่ชอบ พวกเขาจะหยุดทำงาน => "อินเทอร์เน็ตไม่ทำงาน"

จากประสบการณ์นี้ ฉันตัดสินใจว่าการทำงานแบบหลายบ้านยังไม่มีความสำคัญ แม้ว่าดูเหมือนว่าใน linux เวอร์ชันล่าสุดทุกอย่างควรทำงานด้วยคำสั่งเดียวเช่น:

ip route add default 
    nexthop via 192.168.1.1 weight 10 
    nexthop via 192.168.2.1 weight 5

ดังนั้น เพื่อหลีกเลี่ยงความล้มเหลวเพียงจุดเดียว เราจึงใช้ BPI 2 รายการ โดยแต่ละรายการเชื่อมต่อกับผู้ให้บริการรายเดียว เชื่อมต่อเข้าด้วยกันและสื่อสารระหว่างกันโดยกำหนดเส้นทางผ่านนก / OSPF แบบไดนามิก

นอกจากนี้ เราจะประกาศที่อยู่ IP เดียวกันในแต่ละรายการหากมีบริการ (อินเทอร์เน็ต, DNS) นั่นคือเราจะไม่วางเส้นทางเริ่มต้นเอง แต่ผ่านนก การแก้ปัญหาสอดแนม ที่นี่ .

ฟังก์ชั่นนี้ยังไม่ได้ใช้งาน coronavirus ที่ร้ายกาจทำให้ยุ่งเหยิง (ไม่ใช่ทุกอย่างที่มาจาก aliexpress; Layta ร้านค้าออนไลน์อีกแห่งสัญญาว่าจะจัดส่งในหนึ่งสัปดาห์และผ่านไปนานกว่าหนึ่งเดือนผู้ให้บริการรายที่สองไม่สามารถยืดเวลา สายเคเบิลก่อนกักกันทำได้เพียงเจาะรูที่ผนังเพื่อเจาะสายเคเบิล)

วิธีการสั่งซื้อ R64

บอร์ดอยู่ในร้านค้าอย่างเป็นทางการ ซิโนโวไอพี.
นอกจากนี้ยังเป็นการดีกว่าที่จะสั่งซื้อทันที:

  • อาหาร + แจ้งมาตรฐานปลั๊ก EU หรือ US
  • แผงระบายความร้อน: หม้อน้ำ/พัดลม; เนื่องจากทั้ง CPU ถูกทำให้ร้อนและชิปสวิตช์
  • เสาอากาศไวไฟ, เช่น

มีความแตกต่างกันนิดหน่อย - ราคาของการจัดส่งในร้านค้าอย่างเป็นทางการในบางครั้งสูงไม่เพียงพอ ผู้จัดการ Judy Huang ยืนยันกับฉันว่าไม่มีข้อผิดพลาด และคุณสามารถเลือก ePacket ได้ในราคา $5 แต่ฉันเห็นว่าสำหรับรัสเซียมีเพียง EMS ในราคา >33$ ไม่เป็นที่พอใจ แต่ไม่สำคัญ ยิ่งไปกว่านั้น หากคุณเลือกประเทศอื่นสำหรับการจัดส่ง (ฉันไปมาแล้วทุกทวีป) การจัดส่งจะมีค่าใช้จ่าย ~5$ Russophobes?.. แต่แล้วฉันก็พบว่าราคาจัดส่งสำหรับฝรั่งเศสก็อยู่ที่ ~$30 เช่นกัน และสงบลง

เป็นผลให้จูดี้เสนอที่จะสั่งซื้อ แต่ไม่จ่ายเงิน (เปรย: ใส่บัตรน้อยลงเพื่อให้การชำระเงินไม่ผ่านโดยอัตโนมัติ); เขียนถึงเธอและเธอจะลดราคาค่าขนส่งให้เป็นปกติ ความสำเร็จ.

ประเด็น

ทุกอย่างยังทำงานได้ไม่สมบูรณ์

การปฏิบัติ

Ansible=คำสั่งของ Python จะถูกดำเนินการอย่างช้าๆ แม้จะไม่ได้ใช้งานก็ตาม เป็นเวลา 20-30 วินาที; ลำดับความสำคัญที่ยาวกว่าแล็ปท็อป x86 ยิ่งไปกว่านั้น ในตอนแรกจะดำเนินการค่อนข้างเร็ว ~ 3 วินาที จากนั้นจะช้าลงอย่างรวดเร็ว อาจเป็นเพราะความร้อนของ CPU (การควบคุมปริมาณ) รหัส Go ยังใช้งานได้นาน:

# запрос метрик для прометея из node_exporter на Go
$ time curl -s http://172.30.1.1:9100/metrics > /dev/null

real    0m6,118s
user    0m0,005s
sys     0m0,009s

# однако температура 51 градус, не так и много
sa@bananapir64:~$ cat /sys/devices/virtual/thermal/thermal_zone0/temp
51700

WIFI

Wifi ใช้งานได้ แต่หยุดที่ Armbian หลังจากผ่านไปประมาณหนึ่งวัน เขียนว่า:

sa@bananapir64:~$ dmesg | grep -E 'mt7622_wmac.*timeout'
[470303.802539] mt7622_wmac 18000000.wmac: Message 38 (seq 3) timeout
[470314.042508] mt7622_wmac 18000000.wmac: Message 50 (seq 4) timeout
...

การรีสตาร์ทเท่านั้นที่ช่วยได้ เราต้องไปต่อ จัดเรียงออก.

อีเธอร์เน็ต

อีเธอร์เน็ตใช้งานได้ แต่หลังจาก ~ หนึ่งวันแพ็กเก็ต (DHCP) จาก R64 หยุดมา
การรีสตาร์ทอินเทอร์เฟซช่วย:

ifdown br0; sleep 30; ifup br0

ไดรเวอร์เป็นของใหม่ เคอร์เนลยังไม่ได้รับการยอมรับ ฉันหวังว่า Landen Chao ของจีน เสร็จ.

ที่มา: will.com

เพิ่มความคิดเห็น