8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Docker 容器流量未通过 VPN 隧道路由:路由和 IP 规则问题

RadovicDanilo 2月前

19 0

我正在尝试通过 Ubuntu 服务器上的 VPN 隧道路由来自 Docker 容器的流量,但遇到了路由问题。以下是设置以及我迄今为止尝试过的方法:设置:Docker

我正在尝试通过 Ubuntu 服务器上的 VPN 隧道路由来自 Docker 容器的流量,但遇到了路由问题。以下是设置以及我迄今为止尝试过的方法:

设置:

  • p3

  • p4

  • p5

  • p6

  • p7

  • p8

  • p9

当前路由和 IP 规则:

$ ip route show

default via 192.168.200.1 dev vti1
172.20.0.0/16 via 192.168.200.1 dev vti1
root@dockeronubuntu2204-s-1vcpu-1gb-ams3-01:~# ip route show
default via 142.93.128.1 dev eth0 proto static
10.18.0.0/16 dev eth0 proto kernel scope link src 10.18.0.5
10.110.0.0/20 dev eth1 proto kernel scope link src 10.110.0.2
10.129.20.0/27 dev vti1 scope link
142.93.128.0/20 dev eth0 proto kernel scope link src 142.93.141.70
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.18.0.0/16 dev br-db5a54d34c53 proto kernel scope link src 172.18.0.1 linkdown
172.20.0.0/16 dev br-60ce34a14131 proto kernel scope link src 172.20.0.1
192.168.200.0/24 via 192.168.200.1 dev vti1

$ ip route show table vpn

default via 192.168.200.1 dev vti1
172.20.0.0/16 via 192.168.200.1 dev vti1

$ ip rule show

0:      from all lookup local

216:    from 172.20.0.0/16 lookup vpn

217:    from 172.18.0.0/16 lookup vpn

218:    from 192.168.96.0/20 lookup vpn

220:    from all lookup 220

32766:  from all lookup main 32767:  from all lookup default

ip addr show vti1 给出:

18: vti1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ipip 192.168.200.1 peer 10.129.20.2
    inet 192.168.200.1/24 scope global vti1
       valid_lft forever preferred_lft forever
    inet 192.168.200.2/24 scope global secondary vti1
       valid_lft forever preferred_lft forever
    inet6 fe80::5efe:c0a8:c801/64 scope link
       valid_lft forever preferred_lft forever

问题: 从 IP 为 的容器 192.168.200.1 ping 时 172.20.0.2 ,流量似乎没有通过 VPN 路由,我使用 进行了检查 tcpdump -i vti1 。另一方面,尝试 ping 时 192.168.200.0 ,我确实看到流量通过 vti1 ,并且 ping 返回: From 192.168.200.1 icmp_seq=1 Destination Host Unreachable.

有人知道我错过了什么吗?在我看来,vpn 接口没有正确配置来处理通过 192.168.200.0/24 的流量,尽管我对 IT 还很陌生,不知道该去哪里解决这个问题。

附加信息:

  • 第15页

  • p16

帖子版权声明 1、本帖标题:Docker 容器流量未通过 VPN 隧道路由:路由和 IP 规则问题
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由RadovicDanilo在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 要通过 Ubuntu 服务器上的 VPN 隧道路由来自 Docker 容器的流量,您似乎已经接近解决方案,但可能需要进行一些调整。以下是您可以检查和调整的一些事项:

    1. 确保正确的 VPN 路由

    • 确保 VPN 接口( vti1 )配置正确,以便在 Docker 容器子网( 172.20.0.0/16 )和远程网络之间路由流量。
    • 确保另一端的 VPN 服务器已设置为处理和转发 172.20.0.0/16 子网的数据包。

    2. IP 规则和路由表

    • 您的路由表显示来自 172.20.0.0/16 子网的流量应该使用该 vpn 表。但是,您需要确保 VPN 本身知道如何路由往返于此子网的流量。
    • 验证路由规则( ip rule show )和路由( ip route show )是否设置正确。

    考虑像这样调整路由表:

    ip route add 172.20.0.0/16 via 192.168.200.1 dev vti1 table vpn
    ip rule add from 172.20.0.0/16 lookup vpn
    

    3.NAT 配置

    • 如果 VPN 的远程端不知道如何访问您的 Docker 子网,您可能需要在 Ubuntu 服务器上使用 NAT(网络地址转换)。
    • 您可以使用 iptables 配置 NAT:
    iptables -t nat -A POSTROUTING -s 172.20.0.0/16 -o vti1 -j MASQUERADE
    

    4.VPN 隧道配置

    • 确保 VPN 隧道 ( vti1 ) 具有正确的 MTU 设置。不正确的 MTU 可能会导致数据包被悄悄丢弃。
    ip link set dev vti1 mtu 1400
    

    MTU 值 1400 是一个常见的安全值,但您可能需要根据您的 VPN 提供商进行调整。

    5. 测试和调试

    • tcpdump 使用 vti1 来检查来自 Docker 容器的数据包是否确实通过 VPN 出去。
    • 您还可以尝试 ping traceroute 容器内部查看数据包是如何被路由的。
    tcpdump -i vti1
    ping -I 172.20.0.2 192.168.200.1
    

    6. 确保 VPN 服务器路由

    • 检查 VPN 服务器配置以确保它具有 172.20.0.0/16 子网的路由。
    • 如果您控制 VPN 服务器,请向您的 Docker 子网添加路由。

    7. 检查防火墙规则

    • 确保 Ubuntu 服务器和 VPN 服务器上的防火墙规则不会阻止来自 Docker 子网的流量。
    • 使用 iptables ufw 验证并调整防火墙规则。
    iptables -L -v -n
    ufw status
    

    概括

    您可能需要调整 NAT 设置并确保正确应用路由规则。如果执行这些步骤后流量仍无法通过,则问题可能在于 VPN 本身的配置方式或远程 VPN 端点上的路由。

返回
作者最近主题: