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
    • 最新
    • 标签
主页 / unix / 问题

问题[vps](unix)

Martin Hope
ehammer
Asked: 2022-07-02 06:10:26 +0800 CST

不使用基于源的路由的 SNAT/Masquerade 的 VPS 端口转发?

  • 0

我正在尝试使用 VPS 通过 VPN 隧道将 80,443 端口转发到本地 Web 服务器进行测试,同时保持原始源公共 IP 不变。这里的主要问题是路由,因为边缘路由设备将有效地看到 2 个带有公共 IP 的接口(真正的 WAN 和 VPN 接口)。

显然,简单的解决方案是仅通过 vpn 隧道的 SNAT 流量,但我想深入了解 Web 流量的真正来源,加上我做的 NAT 越多,我引入系统的开销就越大。此外,我避免在 VPS 上放置任何反向代理,因为我拒绝在遍历 VPS 时随时解密网络流量。

现在开始测试:使用的 IP:Web SRV:192.168.0.2,VPS Wireguard Addr:192.168.200.1,Router Wireguard Addr:192.168.200.2。

我设置了一个虚拟测试网络,其中包含几个 Debian 11 机器作为 VPS 服务器、本地路由器和 Web 服务器。

在 VPS 上,我的 DNAT 流量从端口 80,443 上的接口传入:

iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport –dports 80,443 -j DNAT –to-destination 192.168.0.2

我已经设置 sysctl.conf 来启用 ipv4 转发。我在 VPS 上有一条静态路由,告诉我从哪里到达 192.168.0.2:

ip route add 192.168.0.2/32 via 192.168.200.2 dev wg0

在本地路由器上,我根据接口在网上找到了一些基于回复的规则:

echo 200 vpsrt >> /etc/iproute2/rt_tables

ip rule add from 192.168.200.2 table vpsrt prio 1
ip route add default via 192.168.200.1 dev wg0 table vpsrt

由于 VPN 隧道位于路由器上,因此 Web 服务器已经配置了其默认网关,因此本地路由器和 Web 服务器之间的返回流量根本不会改变。

VPS 上的 wg0.conf(充当服务器):

[Interface]
PrivateKey=*
Address=192.168.200.1/30
ListenPort=50000

[Peer]
PublicKey=*
AllowedIPs=192.168.200.2/32,192.168.0.2/32

路由器上的 wg0.conf(作为客户端):

[Interface]
Address=192.168.200.2/32
PrivateKey=*

[Peer]
Endpoint=PUBIPVPS:50000
PublicKey=*
AllowedIPs=172.20.200.0/30

我已经验证了 Wireguard 隧道的工作原理。我可以分别在每个设备上 ping 192.168.200.1 和 .2,wg show 说握手完成并且双向数据正在流动。

做一些 PCAP,通过 VPS 的流量是正确的。VPS 上 wg0 上的 Tcpdump 显示发往 192.168.0.2 端口 443 的数据包。VPS 上的 WG Show 说它正在传输 1.3Kb,但路由器上的 WG Show 说它只收到了 500 字节(测试 ping)。路由器 WAN 接口上的 Tcpdump 显示 Wireguard 数据包正在到达路由器。但是路由器 wg0 上的 Tcpdump 显示它没有收到任何数据包。

我很确定问题是 Wireguard 正在默默地丢弃具有未在 AllowedIPs (在路由器上)中配置的源 IP 的数据包。但问题是我不能将 0.0.0.0/0 放在路由器 wg0.conf 上,因为它会开始使用隧道作为整个网络的默认网关!

是否不可能使用 Wireguard 作为非默认网关进行基于源的路由?使用其他隧道软件是否有任何潜在的解决方法?我真的很喜欢 Wireguard 的速度,但是如果没有 SNAT/Masquerade,它会变得非常有限。

更新: 刚刚找到这篇文章: https ://techoverflow.net/2021/07/09/what-does-wireguard-allowedips-actually-do/ 它解释说,wireguard“防火墙”和路由使用 AllowedIPs 绑定在一起。

再做一点测试,我可以简单地将路由器上的 AllowedIPs 放到 0.0.0.0/0 并在 wg0.conf 中添加一个 postup 规则来删除默认网关路由,而只添加一个静态路由到隧道 IP。(不幸的是,wireguard 选择将“防火墙”和路由整合到一个选项中)

路由器 wg0 接口上的 Tcpdump 显示数据包现在正在穿越隧道。路由器 LAN 接口上的 Tcpdump 显示数据包已传输出去,并且 Web 服务器正在响应。但现在的问题是那些基于接口源的路由规则似乎无法正常工作,因为 Web 服务器的响应没有被传递到 wireguard 隧道中。

路由器 WAN 接口上的 Tcpdump 显示 Web 服务器 syn-acks 被推出该网关。所以现在我的问题在于我上面提到的基于源的路由规则。基于源的路由超出了我的知识范围,因此非常感谢您提供任何帮助。

routing vps
  • 2 个回答
  • 188 Views
Martin Hope
Joso
Asked: 2022-04-25 22:04:09 +0800 CST

Centos 8 vs Almalinux,可以升级吗?帮助了解如何更改操作系统

  • -2

我被困在是否将我的带有 cPanel 的 VPS 从 Centos 8 移动到 Almalinux 在几个博客站点中,我读到 almalinux 是一个带有 centos 8 的 1:1 系统,所以它应该保留所有功能而不会有太大困难。

事实上,在我的 VPS 上,我有两个 Magento 2.3.7 站点,并且我已经使用 Redis 和 Varnish 实现了 VPS,我还想添加 elastichsearc。

疑问之一正是在使用 centos 8 时,我已经有了 redis 和 varnish,如果我必须用 Almalinux 更改 Centos,这两个扩展会保留还是应该重新安装?

另一个问题,因为我在 VPS 上有两个站点,并且都已经上线了一段时间,如果出现问题怎么办?

我的托管允许我拍摄快照,以便以某种方式保存我,以便我可以回去。但即使我有这种可能性,我也需要那些比我更有经验的人的建议,如果有任何事情已经处理过与我类似的案例。

谢谢

centos vps
  • 1 个回答
  • 58 Views
Martin Hope
Adaddinsane
Asked: 2018-12-30 02:27:55 +0800 CST

在 VPS 上设置 webmin 缺少包和存储库

  • 1

我只是想将 webmin 设置为新 VPS 上的第一件事,我熟悉 Ubuntu(它是我的主要工作机器)。

这就是 VPS 上的内容

Description:    Debian GNU/Linux 8.5 (jessie)
Release:    8.5
Codename:    jessie

所以我按照说明下载并安装 virtualmin:

wget http://software.virtualmin.com/gpl/scripts/install.sh
sudo /bin/sh install.sh

它开始很好,但最终失败了:

[INFO] 在 /root/virtualmin-install.log 中开始安装日志

▣□□ Phase 1 of 3: Setup
Installing extra dependencies for Debian 8                              [  ✔  ]
Downloading apt.gpg                                                     [  ✔  ]
Adding GPG key for PHP7 packages                                        [  ✔  ]
Downloading RPM-GPG-KEY-virtualmin-6                                    [  ✔  ]
Downloading RPM-GPG-KEY-webmin                                          [  ✔  ]
Installing Virtualmin 6 key                                             [  ✔  ]
Installing Webmin key                                                   [  ✔  ]
Updating apt metadata                                                   [  ✔  ]
Downloading repository metadata                                         [  ✔  ]
Disabling cdrom: repositories                                           [  ✔  ]
Cleaning out old metadata                                               [  ✔  ]

▣▣□ Phase 2 of 3: Installation
Installing Webmin                                                       [ERROR] Failed with error: 100
[  ✘  ]

[ERROR] Something went wrong. Exiting.
[ERROR] The last few log entries were:
Reading state information...
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 webmin : Depends: libauthen-pam-perl but it is not installable
          Depends: libio-pty-perl but it is not installable
          Depends: apt-show-versions but it is not installable
E: Unable to correct problems, you have held broken packages.
#

这是sources.list的样子

deb http://security.debian.org/ jessie/updates main contrib
deb-src http://security.debian.org/ jessie/updates main contrib

# jessie-updates, previously known as 'volatile'
# A network mirror was not selected during install.  The following entries
# are provided as examples, but you should amend them as appropriate
# for your mirror of choice.
#
#deb http://ftp.debian.org/debian/ jessie-updates main contrib
#deb-src http://ftp.debian.org/debian/ jessie-updates main contrib
deb http://software.virtualmin.com/vm/6/gpl/apt virtualmin-jessie main
deb http://software.virtualmin.com/vm/6/gpl/apt virtualmin-universal main

然后我尝试安装一个丢失的包(并为每个丢失的包获得相同的响应):

sudo apt install libauthen-pam-perl
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package libauthen-pam-perl is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'libauthen-pam-perl' has no installation candidate

因此,我尝试添加包含apt-show-versions(缺少的包之一)的存储库:

sudo add-apt-repository ...

但是该命令(add-apt-repository)不存在。所以我尝试加载software-properties-common,也找不到那个包。

我怎样才能摆脱这种精神错乱,把东西装满?

这就是我得到的sudo apt update:

Hit http://software.virtualmin.com virtualmin-jessie InRelease                                                   
Hit http://software.virtualmin.com virtualmin-universal InRelease                                                
Hit http://packages.sury.org jessie InRelease                                                                    
Hit http://security.debian.org jessie/updates InRelease                 
Hit http://software.virtualmin.com virtualmin-jessie/main amd64 Packages
Hit http://packages.sury.org jessie/main amd64 Packages                                    
Get:1 http://packages.sury.org jessie/main Translation-en_GB [169 B]                       
Get:2 http://packages.sury.org jessie/main Translation-en [169 B]                         
Hit http://security.debian.org jessie/updates/main Sources                         
Hit http://security.debian.org jessie/updates/contrib Sources                                      
Hit http://security.debian.org jessie/updates/main amd64 Packages                                  
Get:3 http://packages.sury.org jessie/main Translation-en_GB [169 B]                               
Hit http://security.debian.org jessie/updates/contrib amd64 Packages                                                    
Hit http://security.debian.org jessie/updates/contrib Translation-en                                   
Hit http://security.debian.org jessie/updates/main Translation-en                                      
Get:4 http://packages.sury.org jessie/main Translation-en [169 B]                
Hit http://software.virtualmin.com virtualmin-universal/main amd64 Packages                         
Get:5 http://packages.sury.org jessie/main Translation-en_GB [169 B]
Get:6 http://packages.sury.org jessie/main Translation-en [169 B]                  
Get:7 http://packages.sury.org jessie/main Translation-en_GB [169 B]
Get:8 http://packages.sury.org jessie/main Translation-en [169 B]                  
Get:9 http://packages.sury.org jessie/main Translation-en_GB [169 B]            
Ign http://packages.sury.org jessie/main Translation-en_GB                             
Get:10 http://packages.sury.org jessie/main Translation-en [169 B]
Ign http://packages.sury.org jessie/main Translation-en        
Ign http://software.virtualmin.com virtualmin-jessie/main Translation-en_GB
Ign http://software.virtualmin.com virtualmin-jessie/main Translation-en
Ign http://software.virtualmin.com virtualmin-universal/main Translation-en_GB
Ign http://software.virtualmin.com virtualmin-universal/main Translation-en
debian vps
  • 1 个回答
  • 621 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