AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-308537

Marko Todoric's questions

Martin Hope
Marko Todoric
Asked: 2019-07-25 03:40:11 +0800 CST

允许网络中的客户端与通过 OpenVPN 连接的客户端进行通信

  • 2

网络拓扑是这样的:

OpenVPN 服务器:

Private IP (eth0): 10.0.4.23/16
Public IP (eth1): 77.20.30.40/24
Routes:
default via 77.20.30.1
10.0.0.0/16 (not routable, so no gateway)
10.8.0.0/16 via 10.0.0.65

在同一个私有子网上,我们为通过 OpenVPN 连接的客户端提供了 10.0.13.0/24 网络范围内的专用地址。因此客户端将 OpenVPN 服务器地址视为 10.0.13.1 作为网关。

客户端机器:

Public IP: 217.40.50.60

目前,当客户端连接到 VPN 服务器时,它无法看到私有范围内的子网。因此,我使用 OpenVPN 服务器 tun0 IP (10.0.13.1) 添加了到这些网络的路由

ip r add 10.0.0.0/16 via 10.0.13.1
ip r add 10.8.0.0/16 via 10.0.13.1

它不起作用。所以我在 OpenVPN 服务器上添加了 POSTROUTING iptables 规则

iptables -A POSTROUTING -s 10.0.13.0/24 -o eth0 -j MASQUERADE

那时它奏效了。但是,问题是,例如,当我连接到该私有子网中的服务器时10.0.4.20,该服务器会将原始 IP 地址视为 OpenVPN 私有地址10.0.4.23。

目前我们已经建立了 Microsoft VPN,当我们使用它时,所有服务器都可以看到由 VPN 分配的客户端 IP 地址,因此可以完成(也许)但我不确定我哪里弄错了。

这是 OpenVPN Server 配置文件,为了方便读者,去掉了注释。

port 1194
proto udp
dev tun
user nobody
group nobody
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.0.13.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 10.0.0.1"
push "dhcp-option DNS 10.0.0.2"
push "route 10.0.0.0 255.255.0.0"
push "route 10.8.0.0 255.255.0.0"
dh none
ecdh-curve prime256v1
tls-crypt tls-crypt.key 0
crl-verify crl.pem
ca ca.crt
cert server_oy94rAaIiMtrnvAB.crt
key server_oy94rAaIiMtrnvAB.key
auth SHA256
cipher AES-128-GCM
ncp-ciphers AES-128-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
status /var/log/openvpn/status.log
log /var/log/openvpn/openvpn.log
verb 3

plugin /opt/openvpn-ldap-auth/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf
client-cert-not-required

我尝试设置server 10.0.13.0 255.255.255.0为server 10.0.13.0 255.255.0.0应该是网络,但 OpenVPN 服务器不喜欢该配置,并且如果子网中的第一个八位字节不是,则不想启动0。

所以为了简单起见:我如何制作一些位于 10.0.0.0/16 网络上的服务器,访问位于 10.0.13.0/24 上的 VPN 客户端。或者更好的是,我如何让 OpenVPN 服务器分配给 10.0.13.0/24 范围内的客户端 IP 地址,但实际上让它们属于 10.0.0.0/16?我可能需要在同一台服务器上安装单独的 DHCP 服务器吗?

openvpn
  • 2 个回答
  • 1588 Views
Martin Hope
Marko Todoric
Asked: 2019-06-28 23:14:45 +0800 CST

如果第一个节点关闭,PCS Stonith (fencing) 将杀死两个节点集群

  • 2

我已经使用 pcs (corosync/pacemaker/pcsd) 配置了一个两节点物理服务器集群 (HP ProLiant DL560 Gen8)。我还使用 fence_ilo4 在它们上配置了围栏。

如果一个节点出现故障(在 DOWN 下,我的意思是断电),就会发生奇怪的事情,第二个节点也会死掉。Fencing 会杀死自己,导致两台服务器都离线。

我该如何纠正这种行为?

我尝试的是在下面的部分中添加“ wait_for_all: 0”和“ ” 。但它仍然会杀死它。expected_votes: 1/etc/corosync/corosync.confquorum

在某些时候,要在其中一台服务器上执行一些维护,并且必须将其关闭。如果发生这种情况,我不希望其他节点停机。

这是一些输出

[root@kvm_aquila-02 ~]# pcs quorum status
Quorum information
------------------
Date:             Fri Jun 28 09:07:18 2019
Quorum provider:  corosync_votequorum
Nodes:            2
Node ID:          2
Ring ID:          1/284
Quorate:          Yes

Votequorum information
----------------------
Expected votes:   2
Highest expected: 2
Total votes:      2
Quorum:           1  
Flags:            2Node Quorate 

Membership information
----------------------
    Nodeid      Votes    Qdevice Name
         1          1         NR kvm_aquila-01
         2          1         NR kvm_aquila-02 (local)


[root@kvm_aquila-02 ~]# pcs config show
Cluster Name: kvm_aquila
Corosync Nodes:
 kvm_aquila-01 kvm_aquila-02
Pacemaker Nodes:
 kvm_aquila-01 kvm_aquila-02

Resources:
 Clone: dlm-clone
  Meta Attrs: interleave=true ordered=true 
  Resource: dlm (class=ocf provider=pacemaker type=controld)
   Operations: monitor interval=30s on-fail=fence (dlm-monitor-interval-30s)
               start interval=0s timeout=90 (dlm-start-interval-0s)
               stop interval=0s timeout=100 (dlm-stop-interval-0s)
 Clone: clvmd-clone
  Meta Attrs: interleave=true ordered=true 
  Resource: clvmd (class=ocf provider=heartbeat type=clvm)
   Operations: monitor interval=30s on-fail=fence (clvmd-monitor-interval-30s)
               start interval=0s timeout=90s (clvmd-start-interval-0s)
               stop interval=0s timeout=90s (clvmd-stop-interval-0s)
 Group: test_VPS
  Resource: test (class=ocf provider=heartbeat type=VirtualDomain)
   Attributes: config=/shared/xml/test.xml hypervisor=qemu:///system migration_transport=ssh
   Meta Attrs: allow-migrate=true is-managed=true priority=100 target-role=Started 
   Utilization: cpu=4 hv_memory=4096
   Operations: migrate_from interval=0 timeout=120s (test-migrate_from-interval-0)
               migrate_to interval=0 timeout=120 (test-migrate_to-interval-0)
               monitor interval=10 timeout=30 (test-monitor-interval-10)
               start interval=0s timeout=300s (test-start-interval-0s)
               stop interval=0s timeout=300s (test-stop-interval-0s)

Stonith Devices:
 Resource: kvm_aquila-01 (class=stonith type=fence_ilo4)
  Attributes: ipaddr=10.0.4.39 login=fencing passwd=0ToleranciJa pcmk_host_list="kvm_aquila-01 kvm_aquila-02"
  Operations: monitor interval=60s (kvm_aquila-01-monitor-interval-60s)
 Resource: kvm_aquila-02 (class=stonith type=fence_ilo4)
  Attributes: ipaddr=10.0.4.49 login=fencing passwd=0ToleranciJa pcmk_host_list="kvm_aquila-01 kvm_aquila-02"
  Operations: monitor interval=60s (kvm_aquila-02-monitor-interval-60s)
Fencing Levels:

Location Constraints:
Ordering Constraints:
  start dlm-clone then start clvmd-clone (kind:Mandatory)
Colocation Constraints:
  clvmd-clone with dlm-clone (score:INFINITY)
Ticket Constraints:

Alerts:
 No alerts defined

Resources Defaults:
 No defaults set
Operations Defaults:
 No defaults set

Cluster Properties:
 cluster-infrastructure: corosync
 cluster-name: kvm_aquila
 dc-version: 1.1.19-8.el7_6.4-c3c624ea3d
 have-watchdog: false
 last-lrm-refresh: 1561619537
 no-quorum-policy: ignore
 stonith-enabled: true

Quorum:
  Options:
    wait_for_all: 0

[root@kvm_aquila-02 ~]# pcs cluster status
Cluster Status:
 Stack: corosync
 Current DC: kvm_aquila-02 (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition with quorum
 Last updated: Fri Jun 28 09:14:11 2019
 Last change: Thu Jun 27 16:23:44 2019 by root via cibadmin on kvm_aquila-01
 2 nodes configured
 7 resources configured

PCSD Status:
  kvm_aquila-02: Online
  kvm_aquila-01: Online
[root@kvm_aquila-02 ~]# pcs status
Cluster name: kvm_aquila
Stack: corosync
Current DC: kvm_aquila-02 (version 1.1.19-8.el7_6.4-c3c624ea3d) - partition with quorum
Last updated: Fri Jun 28 09:14:31 2019
Last change: Thu Jun 27 16:23:44 2019 by root via cibadmin on kvm_aquila-01

2 nodes configured
7 resources configured

Online: [ kvm_aquila-01 kvm_aquila-02 ]

Full list of resources:

 kvm_aquila-01  (stonith:fence_ilo4):   Started kvm_aquila-01
 kvm_aquila-02  (stonith:fence_ilo4):   Started kvm_aquila-02
 Clone Set: dlm-clone [dlm]
     Started: [ kvm_aquila-01 kvm_aquila-02 ]
 Clone Set: clvmd-clone [clvmd]
     Started: [ kvm_aquila-01 kvm_aquila-02 ]
 Resource Group: test_VPS
     test   (ocf::heartbeat:VirtualDomain): Started kvm_aquila-01

Daemon Status:
  corosync: active/enabled
  pacemaker: active/enabled
  pcsd: active/enabled
pacemaker cluster
  • 1 个回答
  • 2113 Views
Martin Hope
Marko Todoric
Asked: 2019-05-30 23:05:19 +0800 CST

Grub 2.02 看不到所有驱动器

  • 1

我今天在安装 Windows 10 的同时安装了 Linux mint。设置是这样的:

  • 第一个驱动器 SSD:Windows 10 (MBR)
  • 第二个驱动器:一些数据(MBR)
  • 第三驱动器:更多数据(MBR)
  • 第 4 个驱动器:备份以前的驱动器和我安装 mint 的单独分区。(GPT,因为它是一个大驱动器)

引导不是 UEFI,而是标准引导(尽管 BIOS 允许 UEFI、Windows 和 Mint 以标准方式安装)。安装完美无缺,重新启动后,grub 出现了启动 Mint、memtest 和 Windows 10 的选项,我继续启动到 Mint。执行系统更新,当它变得奇怪时。

重新启动后,我会使用以下消息进入 grub 救援 shell:

error: no such device: {UUID}
error: unknown filesystem

当我发出“ ls”时,我只会得到

(hd0)

我再次重新启动到 Live USB,检查 UUID 没有更改或其他什么,但一切似乎都很好。我安装了根分区,检查了 grub.cfg 并且存在“ insmod part_gpt”,所以它应该加载 gpt 模块。

我已经重新启动,grub 又出现了。

现在,这里变得更奇怪了!一旦我从 grub 启动任何操作系统,它就会正常启动,但是一旦我重新启动,我就会陷入与以前相同的错误,并且行为相同。让我恢复常规 grub 的唯一方法是启动 live usb 然后重新启动(实际上没有别的),它会提示我使用 Mint 和 Windows 以及 memtest 等安装 grub。尝试了几次,或者通过启动进入mint 或 windows,每当我重新启动时,我都会卡住,我必须执行提到的解决方法。

当我从 LIVE 重新启动后设法恢复我的 grub 时,我进入 grub 控制台并发出“ ls”,我可以看到我所有的驱动器和分区。

(hd0) (hd1) (hd2) (hd3) (hd3,gpt3) (hd3,gpt2) (hd3,gpt1) (hd4)

(也许它显示更多,因为我仍然插入了闪存驱动器)。

我试图解决问题的步骤(没有收获):

    1. grub-install /dev/sda(因为它是第一个驱动器,猜测它需要引导加载程序的位置)来自 Live USB 结果:失败,因为它与“/cow”路径有问题(不记得确切的错误消息,我是凭记忆写的,我可以当我回家时添加如果需要)
    1. grub-install /dev/sda从 Mint 重新启动后从 Live USB 结果:成功安装,没有错误消息,update-grub随后发出
    1. grub-probe,它告诉我启动已打开/dev/sdd(因为从技术上讲,启动分区是),所以我尝试了“ grub install /dev/sdd”结果:错误消息它无法在没有黑名单的 GPT 分区上安装 grub,不推荐。
    1. 尝试将“ insmod part_gpt”添加到 grub.cfg 文件的最顶部结果:没有。没变。
grub grub2
  • 2 个回答
  • 2216 Views
Martin Hope
Marko Todoric
Asked: 2019-05-01 10:13:39 +0800 CST

从 GRUB2 引导位于 LVM 上的 ISO 文件

  • 2

我正在尝试通过 grub 从位于 LVM 分区上的 Live iso 文件(特别是 Kali Linux)引导。

我已经设法从 iso 文件加载内核和 initrd,但不知道如何挂载根分区。这就是我目前在 grub.cfg 中的内容

menuentry "Kali Live ISO" --class gnu-linux {
  insmod lvm
  insmod ext2
  set root="lvm/Fedora-root"
  search --no-floppy --fs-uuid --set=root --hint=${root} 29e2f518-5fad-49c9-90ef-966b0c033c5e
  set isofile="/ISO/kali-linux-2019.1a-amd64.iso"
  loopback loop $isofile
  linux (loop)/live/vmlinuz boot=live iso-scan/filename=${isofile} noconfig=sudo username=root hostname=kali
  initrd (loop)/live/initrd.img
}

上面的 uuid 是 ISO 文件所在分区的 uuid 编号,从blkid. 我被困在这里。

grub iso
  • 3 个回答
  • 1893 Views
Martin Hope
Marko Todoric
Asked: 2019-04-20 12:41:46 +0800 CST

当“选择”循环运行时,Bash 忽略 SIGINT 陷阱

  • 4

当我将“陷阱”与选择循环结合使用时,即当我尝试在显示选项时按 CTRL+C 来突破时,它只会在终端中打印 ^C。如果我从脚本中删除“陷阱”,它通常会退出,也就是说它会接受 CTRL+C。

我已经在两种不同版本的 bash 上对此进行了测试(一种随 CentOS 提供,另一种随 Fedora 提供),我对来自 Fedora(4.4.23(1)-release)的那个有问题。CentOS 附带的 Bash 版本 4.2.46(2)-release 似乎工作正常。我还在本地终端和远程(通过 ssh)上对此进行了测试。问题总是在 Fedora 方面。

我将发布代码以查看我在说什么

这个不行:

#!/bin/bash

trap exit SIGINT

select opt in One Two Three; do
        break
done

如果我要删除整个 'trap exit SIGINT' 行,它将正常工作并接受 CTRL+C 没有问题。

任何想法如何解决或绕过这个?

bash signals
  • 2 个回答
  • 1438 Views
Martin Hope
Marko Todoric
Asked: 2019-04-10 07:20:07 +0800 CST

选择循环中的退格键

  • 0

当我使用选择循环创建选项列表时,如果我在提示期间出错并想按退格键,它不会删除字符,而是显示 ^H 而不是它。

我知道在“读取”中我可以使用 -e 来解决这个问题,但是在选择循环中我该怎么办?此外,CTRL+C 跳出循环不起作用。我创建了选择循环,以类似菜单的方式循环访问远程端的目录。如果选择了目录,它将改变目录,但如果它不是目录,它将选择它作为要编辑的文件。

until [[ $DONE == Yes ]]; do
select dir in $(ssh auth1 ls $PUTANJA $ONLYARPA) Nazad; do
        case $dir in
                "Nazad")
                        if [ "$PUTANJA" == "/var/named/chroot/var/named/master" ]; then
                                return
                        else
                                PUTANJA=$(ssh auth1 "cd $PUTANJA; cd ..; pwd")
                        fi
                        ;;
                *)
                        if ssh auth1 "[ -d $PUTANJA/$dir ]"; then
                                PUTANJA=$PUTANJA/$dir
                        else
                                ZONA=$dir
                                DONE=Yes
                        fi
                        ;;
        esac
        break
done
done
bash select
  • 1 个回答
  • 206 Views
Martin Hope
Marko Todoric
Asked: 2018-12-09 06:45:37 +0800 CST

来自 readline 的输入会覆盖提示

  • 1

我正在尝试创建一个交互式 bash 脚本,我可以在其中调用 1-n 中的给定选项,或者像命令一样调用它们。

它将以模拟提示结束,并且“读取”用于获取输入,ofc。

但是,如果我输入的文本太大,它将返回到行首并在我输入时覆盖提示。

提示是彩色编码的,如果我删除颜色转义,它会很好。但我喜欢颜色:)

脚本提示是这样的:

NOC=$(echo -en '\033[0m')               # Default
RED=$(echo -en '\033[00;31m')
YELLOW=$(echo -en '\033[00;33m')
CYAN=$(echo -en '\033[00;36m')

OPROMPT="${RED}[Admin${CYAN}@${RED}bulletproof]#${NOC}"

until [ ! -z "$MCHOICE" ]; do
        read -p "${OPROMPT} " -e MCHOICE
done

我应该怎么做才能阻止这种行为?似乎想不通。如果我使用 echo 或 printf 来显示提示,如果我输入一些内容然后按退格键更正它,它将删除它。

如果我不清楚,这里有一个例子:这是提示(只是图片颜色:P)

"[Admin@bulletproof]# "

...现在输入命令:

"[Admin@bulletproof]# vpn start my"

...现在我继续打字

"domain.lanletproof]# vpn start my"

什么时候应该:

"[Admin@bulletproof]# vpn start mydomain.lan"

我还注意到缓冲区因终端窗口大小而异。当我最大化终端时,它不会在同一点开始切断,但具有更长的“容忍度”

编辑:刚刚想出了一种方法来大幅改善关于这个的“缓冲”。

如果我这样设置代码:

until [ ! -z "$MCHOICE" ]; do
        printf "$OPROMPT"
        read -p " " -e MCHOICE
done

它将允许我输入更长的文本...不知道为什么..

bash scripting
  • 1 个回答
  • 1031 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve