对于服务器/网关

对于服务器/网关

我正在设置一个自制服务器,该服务器将托管在有光纤连接的朋友家里(我们称之为家庭专用服务器:HDS),但是,我不想直接使用他的 IP 连接,我想使用专用服务器的连接(我们称之为 DS)将保护自己的 IP,提供良好的 DDoS 保护,并与互联网的其他部分有更好的互连一致性。

就此而言,我获得了该指定专用服务器的辅助(也称为“故障转移”)IP。我想使用这个IP作为我的HDS的隧道,这样我的HDS就可以通过故障转移直接到达,就好像它是它自己的接口IP一样,而不需要在任何新部署的服务上添加特定的端口重定向。

示例:
- 假设辅助 IP 是 127.1.2.3
- 我在 HDS 上的端口 22 上托管服务
- 然后来自互联网的任何客户端都可以连接到 127.1.2.3:22 并直接到达 HDS。 - 另一方面,HDS 也将使用辅助 IP 作为访问互联网的网关。

问题是:尽管我很确定实际上很难解释这一点,但我不知道如何实现这一目标,也不知道在网络上搜索什么,这就是为什么我来这里是为了获得一些启发。我的猜测(也是希望)是一些智能路由 + VPN 连接足以实现这一目标。

我制作了一个简单的绘制原理图,如果它可以帮助理解我想要实现的目标。

网络示意图

任何指导表示赞赏。

答案1

好吧,像往常一样,当我遇到一个棘手的问题时,我可以在工作一整天后自己回答。

对于服务器/网关

假设我的服务器的默认值(接口和公共 IP)是 dddd,用于我的示例的其余部分。

1) 获取故障转移 IP(附加 IP),在本例中假设是f.f.f.f
2) 收到后,将此 ip 添加到/etc/network/interfaces

auto eth0:0
iface eth0:0 inet static
address f.f.f.f
netmask 255.255.255.255
broadcast f.f.f.f

然后应用更改:/etc/init.d/networking restart

3) 设置 openvpn 服务器。那里有很多教程......大多数都是可怕的教程。我能给出的唯一建议是从安装 openvpn 后可以在帮助目录中找到的默认配置开始。因此,为了达到我们的目的,需要配置的重要部分来实现适当的服务器。
就我而言,配置文件是/etc/openvpn/servervpn.conf

# IP and protocols
local d.d.d.d # Listen to your default server IP
port 1194 # Default port, perfectly fine to me
proto udp # Heard there were issues with tcp
dev tap # Can use tun as well
# Certificates and encryption
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-auth ta.key 0
cipher AES-256-CBC
# Tunnel network
server 10.8.0.0 255.255.255.0 # I'm sticking to default range which is fine
comp-lzo
# DNS servers provided by opendns.com.
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
# Keepalive
keepalive 10 120
# Safety
user nobody
group nogroup
persist-key
persist-tun
# Logging
status openvpn-status.log
log-append /var/log/openvpn.log
verb 5
mute 20

然后重新启动服务, 如果配置不完美,则不会提供错误,也不会提供日志记录,祝您好运找到问题所在。systemctl restart [email protected]

4) Iptables 您需要将进入故障转移的流量重定向到 VPN 隧道,并将 VPN 客户端的数据包中继到网络。这是最痛苦的部分......所以希望你喜欢它。
将 ffff 替换为您的故障转移 IP,10.8.0.0/24 是默认 VPN 网络,因此如果不使用默认网络,请进行相应更改。
注意,最后一个 IP 是我的 VPN 客户端 IP,它可能会改变,但对我来说是 10.8.0.4

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source f.f.f.f
iptables -t nat -A PREROUTING -d f.f.f.f -j DNAT --to-destination 10.8.0.4

对于 VPN 客户端(家庭服务器)

1) 使用 MAC 分配为您的家庭服务器分配固定 IP,因此我的本地家庭服务器 IP 是 192.168.1.2,但这并不重要 2) 重定向端口 1194 udp(OpenVPN 的默认端口,但您可以使用任何端口)你喜欢)到你的本地服务器IP,在我的例子中是192.168.1.2 3)安装openvpn并连接到你的VPN服务器。与此相关的大量教程,但/etc/openvpn/client.conf对于我的情况,再次重要的设置:

client
remote d.d.d.d 1194 # your server main/default IP
dev tap # can use tun as well
proto udp # tcp seems to have issues
remote my-server-1 1194
resolv-retry infinite
user nobody
group nogroup
# Try to preserve some state across restarts.
persist-key
persist-tun
# Certs
ca ca.crt
cert client1.crt
key client1.key
ns-cert-type server
tls-auth ta.key 1
cipher AES-256-CBC # Might vary depending on how you set it
# Compression
comp-lzo
# Log verbosity
verb 3

然后重启客户端:systemctl restart[电子邮件受保护]

确保您的防火墙策略设置为接受所有内容(除非您知道自己在做什么),然后您就可以开始了。

现在,它应该就像您的故障转移 IP 是您的家庭服务器的 IP 一样,除非您的服务需要侦听 VPN IP 或 0.0.0.0。

希望这篇文章对其他人有用。

感谢这篇法国文章,找到了所需的 iptables,所以感谢他们:http://www.guiguishow.info/2013/06/14/vpn-unipersonnel-avec-une-ip-failover-en-sortie-sur-un-dedie-ovh/

相关内容