一、国道部分(7条共3729公里)

1、108国道山西段
国道108北京昆明公路,山西境内段起自灵丘县下北泉村、经繁峙大管、繁峙县城、代县、原平市、忻州顿村、忻州市解原乡、阳甜大盂、阳曲县黄寨、东山过境、武宿、榆次区西外环、祁县东观、平遥县、介休市、灵石县、霍州市、洪洞县、洪洞甘亭、临汾尧庙、襄汾县、曲沃县、侯马市、新绎县、稼山县至河津市禹门口黄河大桥出省,全长837公里。
2、109国道山西段
国道109北京拉萨公路,山西境内段起自阳高县孙启庄村、经大同县、大同市云岗、左云县、右玉县至平鲁县西北二梁进入内蒙,全长211公里。
3、207国道山西段
国道207内蒙古锡林浩特 海安公路,山西境内段起于盂县东北部河北界十八盘,经阳泉市郊区白毛岭、白泉、五渡、义井、平定县暂石、昔阳县、和顺县、左权县、黎城县、黎城百梁镇、潞城微子镇、潞城市、长治市、高平市、晋城市、新房洼至山西河南界的道保河出境进入河南省,全长444公里。
4、208国道山西段
国遣208内蒙古二连浩特- 山西长治市公路,山西境内段起自大同市德胜堡,经大同市、怀仁县城西、山阴县城西、雁门关、代县阳明堡,原平市、忻州市、大原市新建路、小店、祁县东观、沁县、屯留常村至长治市八一广场,全长409公里。
5、209国道山西段
国遣209内蒙古呼和浩特市——广西北诲公路,山西境内起自偏关县东北部与内蒙古交界的水泉堡村,经偏关县、三岔镇、五寨县、岢岚县、岚县、方山县、离石市、中阳县、交口县、隰县、大宁县、吉县、乡宁县、河津市、临猗县、运城市、平陆县至茅津渡进入河南省,全长766公里。
6、307国道山西段
国道307河北黄骅——银川公路,山西境内段起自平定县东北部与河北交界的旧关村,经平定县、阳泉市、寿阳县、太原剪子湾、迎泽桥西口、晋伺、清徐县、交城县、文水县、汾阳县薛公岭、离石县、柳林县至军渡黄河大桥进入陕西省吴堡县,全长364公里。
7、309国道山西段
国道309荣城——兰州公路,山西境内段起自黎城县东与河北交界的下浣村,经黎城县、潞城市、黄碾镇、屯留县、张店镇、安译县、洪洞县、甘亭填入临汾市坂下村、乡宁光华镇、台头镇、窑曲、吉县至七郎窝黄河大桥西进入陕西省,全长368公里。
国道主干线两条:
国道035平定旧关一汾阳,经太旧、南过境(在建的罗城一夏家营)、夏汾高速公路全长214公里;
国道035汾阳一中阳,经中阳枝柯镇,中阳县,全长116公里。
二、省道部分(81条共8518公里)
1、102省道大原——长治公路,简称太长线,起自大原许西,经榆次市,大谷范村、榆社、武乡、襄垣、长治黄碾至长治八一广场,全长205公里。
2、103省道大原——小店公路,简称太小线,起自大原经济管理干部学院,至小店大村桥,全长205公里。
3、104省道大原——佳县公路,简称太佳线,起自太原西铭,经化客头乡,古交市、镇城底镇、娄烦马家庄乡、方山马坊镇、临县、青凉寺、兔板镇至临县克虎寨镇进入陕西佳县,山西境内全长228公里。
4、201省道马市口——走马驿公路,简称马走线,起自天镇马市口,经天镇、河北省阳原县、广灵县、灵丘县至走马驿,全长155公公里。
5、202·省道神泉堡——丰镇公路,简称神丰线,起自阳高县神泉堡村,经东小村镇、古城镇、阳高县至长城出省进入内蒙古丰镇,全长66公里。
6、203省道大同——灵丘公路,简称大灵线,起自大同水泊寺,经古定桥、浑源县、六合地至灵丘县,全长143公里。
7、204省道云岗——丰镇公路,简称云丰线,起自大同云岗,经新荣区、拒墙堡进入内蒙古丰镇,全长36公里。
8、205省遣大同——石嘴公路,简称大石线,起自大同五一桥,经怀仁县、应县、繁峙砂河、五台县台怀至石嘴,全长190号。
9、206省道大同——忻州公路,简称大忻线,起自大同西花园,经西韩岭、朔州市、原平红池至忻州口,全长232公里。
10、210省道应县——凉城公路,简称应凉线,起自应县县城,经吴家窑镇、马道头、左云县至左云宁鲁进入内蒙古凉城,山西境内公路全长93公里。
11、211省道山阴——和林格尔公路,简称山和线,起自山阻县城,经玉井镇、元堡子、右玉县、右玉城镇至山西内蒙古界杀虎口镇,全长125公里。
12、212省道朔州——平鲁城公路,简称朔平线,起自朔州市经平鲁至平鲁城镇,全长54公里。
13、213省道繁峙——五台公路,简称繁五线,起自繁峙西留属村,经峨口镇、岩头镇至五台豆村镇,全长51公里。
14、214省道阳泉——石盆口公路,简称阳石线,起自阳泉五渡,经荫管镇、白毛岭、盂县城、梁家寨、五合县陈家庄村至石盆口村,全长152公里。
15、215省道宁武——白家滩公路,简称宁白线,起自宁武县城,经东寨镇、石家庄镇、静乐县丰润镇、静游镇、娄烦县、杜交曲镇至白家滩村,全长163公里。
16、216省道榆次——盂县公路,简称榆盂线,起自榆次市,经什贴乡、太安驿、白家尼村、下曲村、温家庄乡、许家沟村至盂县城南,全长85公里。
17、217省道岚县——马家庄公路,简称岚马线,起自岚县县城,经兰家舍、娄烦静游镇、娄烦县至马家庄,全长43公里。
18、218省道岢岚——大武公路,简称苛大线,起自岢岚县经蔡家崖、临县白文镇、临县、三交镇至方山大武镇,全长201公里。
19、219省道古交——吴城公路,简称古吴线,起自古交市西,经常安乡、东塔村、古洞道乡、西社镇、苍儿会乡至离石县吴城镇九里湾村,全长114公里。
20、220省道东观——长治公路,筒称东长线,起自祁县东观,经来远镇、分南、沁县、屯留常村至长治八一广场,全长143公里。

网上搜了一圈,针对这个问题的解决方法很简单,那就是删除旧的缓存,让rrd重建缓存即可

解决PVE RRD update error 错误

service rrdcached stop
rm -rf /var/lib/rrdcached/*
service rrdcached start

然后等待一会儿,重启pve就能解决这个问题

pve网卡、核显直通,系统时间修正及自动同步

一、pve折腾遇到的问题

ventoy不支持pve8这个版本,更新ventoy即可!

二、网卡直通openwrt

为解决螃蟹网卡wan口虚拟化速度慢的问题,决定将螃蟹网卡直通openwrt,步骤命令如下:

打开shell输入

nano /etc/default/grub

在里面找到:GRUB_CMDLINE_LINUX_DEFAULT=”quiet”,修改为。

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

ctrl+x保存。

更新一下

update-grub

重启系统

reboot

修改文件 /etc/modules

nano /etc/modules

加入如下内容,ctrl+x保存。

vfio
 vfio_iommu_type1
 vfio_pci
 vfio_virqfd

虚拟机中添加pci设备,选中螃蟹网卡

移除原来的虚拟wan口,重启虚拟机。搞定!

测速恢复正常

====================================================================

三、核显直通ubuntu虚拟机

1、启动内核IOMMU支持
打开PVE节点的shell,输入命令

nano /etc/default/grub

将GRUB_CMDLINE_LINUX_DEFAULT列改成如下:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off,vesafb:off"

编辑完文件后按“Ctrl + X” > “Y” > “回车”,确认保存并退出,然后更新一下引导配置:

update-grub

2、加载硬件直通相关模块
在PVE的shell中输入:

nano /etc/modules

加入如下内容,ctrl+x保存。

vfio
 vfio_iommu_type1
 vfio_pci
 vfio_virqfd

3、添加驱动黑名单
编辑PVE系统的驱动黑名单配置文件:

nano /etc/modprobe.d/blacklist.conf

这个文件原来不存在,打开里面是空白的,添加以下内容:

blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915

这些是PVE系统核显相关的驱动,添加到“blacklist.conf”文件后,PVE系统将不加载核显的驱动,留给虚拟机用。

4、绑定核显到vfio模块
查看核显以及声卡的供应商和设备ID

lspci -n | grep -E "0300|0403"

输出如下:

00:02.0 0300: 8086:5917 (rev 07)
00:1f.3 0403: 8086:9d71 (rev 21)

其中“8086:5917”和“8086:9d71”分别就是核显和声卡的供应商ID和设备ID,把它们绑定到vifo模块:

echo "options vfio-pci ids=8086:5917,8086:9d71" > /etc/modprobe.d/vfio.conf

其他主板或CPU核显和声卡的硬件ID会不一样,请根据实际情况添加。

最后更新配置信息并重启PVE主机

update-initramfs -u
reboot

重启上来之后检查模块是否正常加载:

lsmod | grep vfio

有类似输出说明就是正常的:

vfio_pci               16384  3
vfio_pci_core          73728  1 vfio_pci
vfio_virqfd            16384  1 vfio_pci_core
irqbypass              16384  24 vfio_pci_core,kvm
vfio_iommu_type1       45056  2
vfio                   45056  10 vfio_pci_core,vfio_iommu_type1

进入虚拟机硬件设置,添加pci设备,选择核显、声卡如下图。重启虚拟机生效。

====================================================================

四、修改pve系统时间及自动更新

安装完pve遇到系统时间与实际不符,比实际晚两年多,用如下方法实测管用。

1、设置系统时间与硬件时间一致

#查看硬件的时间

hwclock --show

设置硬件时间

hwclock --set --date '2024-01-20 18:22:00' 

设置系统时间和硬件时间同步

hwclock --hctosys  

让系统时间和硬件时间保持一致

hwclock -s 

2、设置内网时间同步

安装时间同步插件

apt install systemd-timesyncd

修改时间服务器

nano /etc/systemd/timesyncd.conf

添加阿里时间同步服务器,将这行加到里面保存

NTP=ntp.aliyun.com

重启服务

systemctl restart systemd-timesyncd.service
systemctl enable systemd-timesyncd.service

系统必要性更新

apt update 
apt install curl unzip -y
# 修改时间
timedatectl set-timezone Asia/Shanghai

echo "zh_CN.UTF-8 UTF-8" >> /etc/locale.gen
# 修改中文

dpkg-reconfigure locales
# 指定本地语言
reboot


apt update
# 验证中文设置是否生效

修改固定ip
进入/etc/netplan文件夹

network:
  ethernets:
    ens192:
      addresses:
        - 192.168.16.8/24
      routes:
        - to: 0.0.0.0/0
          via: 192.168.16.5
      nameservers:
        addresses: [192.168.16.2]
      match:
        macaddress: 00:0c:29:34:70:3c
      set-name: eth0            
  version: 2

netplan apply

53端口解绑
为了方便直接使用本机的53端口进行解析,需要进行端口绑定解除。

lsof -i:53

nano /etc/systemd/resolved.conf
DNSStubListener=no        # 找到这句话, 去了# , yes 改到 no
sudo systemctl reload-or-restart systemd-resolved
lsof -i:53

mosdns 安装过程

# 挂载运行目录
mkdir /etc/mosdns

cd /home
# 解压至指定目录
unzip mosdns-linux-amd64.zip -d /etc/mosdns

# 进入运行文件夹
cd /etc/mosdns

# 赋予可执行权限
chmod +x mosdns

# 复制到存放自定义或第三方安装的可执行程序的文件夹
cp mosdns /usr/local/bin

# 返回根目录
cd /
# 进入启动目录
cd /etc/systemd/system/
# 创建启动服务
touch mosdns.service
# 编辑启动文件内容
nano mosdns.service

[Unit]
Description=mosdns daemon, DNS server.
After=network-online.target

[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/mosdns start -c /etc/mosdns/config.yaml -d /etc/mosdns

[Install]
WantedBy=multi-user.target


mkdir /etc/mosdns/rule
touch /etc/mosdns/rule/{whitelist,blocklist,greylist,ddnslist,hosts,redirect,adlist,localptr}.txt

基础规则复制
需增加内容
在 blocklist 中增加内容,进行优化

keyword:.localdomain
domain:in-addr.arpa
domain:ip6.arpa

在 localptr. txt 中增加一下内容,进行查询优化

# block all PTR requests
domain:in-addr.arpa
domain:ip6.arpa

在 whitelist. txt 文件中,增加以下内容,进行查询优化

domain:push-apple.com.akadns.net
domain:push.apple.com
domain:iphone-ld.apple.com
domain:lcdn-locator.apple.com
domain:lcdn-registration.apple.com
domain:cn-ssl.ls.apple.com
domain:time.apple.com
domain:store.ui.com.cn
domain:amd.com
domain:msftncsi.com
domain:msftconnecttest.com
domain:office.com
domain:office365.com

配置文件内容
以下配置文件为 fakeip 模式+远程 DNS 真实IP解析

log:
  level: info
  file: "/etc/mosdns/mosdns.log"

api:
  http: "0.0.0.0:8338"

include: []

plugins:
  - tag: geosite_cn
    type: domain_set
    args:
      files:
        - "/etc/mosdns/geosite_cn.txt"

  - tag: geoip_cn
    type: ip_set
    args:
      files:
        - "/etc/mosdns/geoip_cn.txt"

  - tag: geosite_no_cn
    type: domain_set
    args:
      files:
        - "/etc/mosdns/geosite_geolocation_noncn.txt"

  - tag: whitelist
    type: domain_set
    args:
      files:
        - "/etc/mosdns/rule/whitelist.txt"

  - tag: blocklist
    type: domain_set
    args:
      files:
        - "/etc/mosdns/rule/blocklist.txt"

  - tag: greylist
    type: domain_set
    args:
      files:
        - "/etc/mosdns/rule/greylist.txt"

  - tag: ddnslist
    type: domain_set
    args:
      files:
        - "/etc/mosdns/rule/ddnslist.txt"

  - tag: hosts
    type: hosts
    args:
      files:
        - "/etc/mosdns/rule/hosts.txt"

  - tag: redirect
    type: redirect
    args:
      files:
        - "/etc/mosdns/rule/redirect.txt"

  - tag: adlist
    type: domain_set
    args:
      files:
        - "/etc/mosdns/rule/adlist.txt"

  - tag: local_ptr
    type: domain_set
    args:
      files:
        - "/etc/mosdns/rule/localptr.txt"

  - tag: lazy_cache
    type: cache
    args:
      size: 32768
      lazy_cache_ttl: 86400
      dump_file: /etc/mosdns/cache.dump
      dump_interval: 3600

  - tag: reject_3
    type: sequence
    args:
      - exec: reject 3

  - tag: reject_blocklist
    type: sequence
    args:
      - exec: query_summary reject_blocklist
      - exec: $reject_3

  - tag: reject_adlist
    type: sequence
    args:
      - exec: query_summary reject_adlist
      - exec: $reject_3

  - tag: reject_ptrlist
    type: sequence
    args:
      - exec: query_summary reject_ptrlist
      - exec: $reject_3

  - tag: reject_qtype65
    type: sequence
    args:
      - exec: query_summary reject_qtype65
      - exec: $reject_3

  - tag: forward_local
    type: forward
    args:
      concurrent: 1
      upstreams:
        - addr: udp://223.5.5.5:53
          enable_pipeline: false
          insecure_skip_verify: false
          idle_timeout: 10
          enable_http3: false

  - tag: forward_remote
    type: forward
    args:
      concurrent: 1
      upstreams:
        - addr: udp://192.168.6.15:6666
          enable_pipeline: false
          insecure_skip_verify: false
          idle_timeout: 10
          enable_http3: false


  - tag: forward_cf
    type: forward
    args:
      concurrent: 1
      upstreams:
        - addr: tls://1.1.1.1:853
          enable_pipeline: true
          insecure_skip_verify: false
          idle_timeout: 30
          enable_http3: false 

  - tag: modify_ttl
    type: sequence
    args:
      - exec: ttl 0-0

  - tag: modify_ddns_ttl
    type: sequence
    args:
      - exec: ttl 5-5

  - tag: local_sequence
    type: sequence
    args:
      - exec: query_summary forward_local
      - exec: prefer_ipv4
      - exec: $forward_local

  - tag: remote_sequence
    type: sequence
    args:
      - exec: query_summary forward_remote
      - exec: prefer_ipv4
      - exec: $forward_remote

  - tag: forward_cf_upstream
    type: sequence
    args:
      - exec: query_summary forward_cf
      - exec: prefer_ipv4
      - exec: $forward_cf  

  - tag: has_resp_sequence
    type: sequence
    args:
      - matches: qname $ddnslist
        exec: $modify_ddns_ttl
      - matches: "!qname $ddnslist"
        exec: $modify_ttl
      - matches: has_resp
        exec: accept

  - tag: query_is_ddns_domain
    type: sequence
    args:
      - matches: qname $ddnslist
        exec: $local_sequence

  - tag: query_is_local_domain
    type: sequence
    args:
      - matches: qname $geosite_cn
        exec: $local_sequence

  - tag: query_is_no_local_domain
    type: sequence
    args:
      - matches: qname $geosite_no_cn
        exec: $remote_sequence

  - tag: query_is_whitelist_domain
    type: sequence
    args:
      - matches: qname $whitelist
        exec: $local_sequence

  - tag: query_is_greylist_domain
    type: sequence
    args:
      - matches: qname $greylist
        exec: $remote_sequence

  - tag: query_is_reject_domain
    type: sequence
    args:
      - matches: qname $blocklist
        exec: $reject_blocklist
      - matches: qname $adlist
        exec: $reject_adlist
      - matches:
        - qtype 12
        - qname $local_ptr
        exec: $reject_ptrlist
      - matches: qtype 65
        exec: $reject_qtype65

  - tag: fallback_sequence
    type: sequence
    args:
      - exec: $forward_cf_upstream
      - matches: "rcode 2"
        exec: goto local_sequence
      - matches: "resp_ip $geoip_cn"
        exec: goto local_sequence
      - matches: "!resp_ip $geoip_cn"
        exec: goto remote_sequence

  - tag: main_sequence
    type: sequence
    args:
      - exec: metrics_collector metrics
      - exec: $hosts
      - exec: jump has_resp_sequence
      - matches:
        - "!qname $ddnslist"
        - "!qname $blocklist"
        - "!qname $adlist"
        - "!qname $local_ptr"
        exec: $lazy_cache
      - exec: $redirect
      - exec: jump has_resp_sequence
      - exec: $query_is_ddns_domain
      - exec: jump has_resp_sequence
      - exec: $query_is_whitelist_domain
      - exec: jump has_resp_sequence
      - exec: $query_is_reject_domain
      - exec: jump has_resp_sequence
      - exec: $query_is_greylist_domain
      - exec: jump has_resp_sequence
      - exec: $query_is_local_domain
      - exec: jump has_resp_sequence
      - exec: $query_is_no_local_domain
      - exec: jump has_resp_sequence
      - exec: $fallback_sequence

  - tag: udp_server
    type: udp_server
    args:
      entry: main_sequence
      listen: ":53"

  - tag: tcp_server
    type: tcp_server
    args:
      entry: main_sequence
      listen: ":53"

服务启动
开启并运行mosdns

systemctl enable mosdns --now 
systemctl status mosdns

复制规则更新脚本文件至程序文件夹

chmod +x mos_rule_update.sh

#赋予可执行权限
./mos_rule_update.sh
# 测试运行
规则更新脚本与日志清零脚本
crontab -e
# 定时执行任务
0 0 * * 0 sudo truncate -s 0 /etc/mosdns/mosdns.log && /etc/mosdns/mos_rule_update.sh