Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
mingl0280
V2EX  ›  Linux

ubuntu 配置路由转发,我忘了啥……

  •  
  •   mingl0280 ·
    mingl0280 · Jun 23, 2021 · 3823 views
    This topic created in 1966 days ago, the information mentioned may be changed or developed.
    事情是这样的,我这里的 vpn 有个奇怪的 bug 会导致我电脑上 dns 失效。为了避免这种情况发生,我就开了个 ubuntu 的虚拟机做专门的 vpn,然后在路由器里配置了转发表,想让访问 vpn 的流量转发到 vpn 虚拟机。
    现在的情况是,vpn 配置好了,虚拟机内可以访问 vpn 网络的资源,但是从路由器上转发到虚拟机的请求却不能访问 vpn 网络的资源。
    已配置好的部分:
    (VPN 虚拟机)
    sysctl 的 net.ipv4.ip_forward = 1
    iptables FORWARD 和 INPUT 链都设为了 Accept
    机器 ip 192.168.1.88
    ping 172.16.x.x 的服务器是正常的。
    (路由器)
    172.16.0.0/16 转发 192.168.1.88
    172.25.0.0/16 转发 192.168.1.88
    现在客户端上 tracert 到 172.16.x.x 地址的话是显示
    C:\>tracert -d 172.16.x.x

    通过最多 30 个跃点跟踪到 172.16.x.x 的路由

    1 <1 毫秒 <1 毫秒 <1 毫秒 192.168.1.1
    2 <1 毫秒 <1 毫秒 <1 毫秒 192.168.1.88
    3 * * * 请求超时。


    请问我是忘了配置啥东西?(或者 iptables 配错了也有可能……)
    18 replies  •  2021-06-23 17:33:23 +08:00
    snuglove
    snuglove
    Jun 23, 2021 via Android
    1
    所以你应该贴出你的这条防火墙配置
    mingl0280
    mingl0280
    OP
    Jun 23, 2021
    2
    @snuglove

    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    ACCEPT all -- 192.168.0.0/16 anywhere

    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    ACCEPT all -- anywhere anywhere
    ACCEPT all -- anywhere anywhere

    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    0gys
    0gys
    Jun 23, 2021 via iPhone
    3
    1.88 的路由贴出来
    archean
    archean
    Jun 23, 2021
    4
    是不是应该配个 MASQUERADE,不然包怎么回来
    ysc3839
    ysc3839
    Jun 23, 2021 via Android
    5
    只是为了路由转发的话建议使用 OpenWrt,因为相关配置基本是开箱即用的。
    chenset
    chenset
    Jun 23, 2021
    6
    看下是不是缺这个

    ```

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    ```
    mingl0280
    mingl0280
    OP
    Jun 23, 2021 via Android
    7
    @ysc3839 openvpn 那我就得找厂商要单独的 vpn 软件安装包了,基本上算做梦
    Jirajine
    Jirajine
    Jun 23, 2021 via Android
    8
    别忘了回程路由,图省事 masquerade 一下也行。
    no1xsyzy
    no1xsyzy
    Jun 23, 2021
    9
    你 ...88 的 Network Manager 是什么?
    https://wiki.archlinux.org/title/Network_configuration#Network_managers
    networkd 需要单独配置一下
    ysc3839
    ysc3839
    Jun 23, 2021
    10
    @mingl0280 什么意思?我没有提 OpenVPN,我说的是 OpenWrt 。
    mingl0280
    mingl0280
    OP
    Jun 23, 2021
    11
    @ysc3839 打错了,OpenWRT,vpn 软件不支持,得找厂家重新做,显然是不可能的。
    ysc3839
    ysc3839
    Jun 23, 2021
    12
    @mingl0280 都是 Linux 系统,不会不支持吧?具体是怎么个不支持呢?
    mingl0280
    mingl0280
    OP
    Jun 23, 2021
    13
    @ysc3839 二进制包,tar.gz 那种,没法在 openwrt 上用(库都不一样)
    mingl0280
    mingl0280
    OP
    Jun 23, 2021
    14
    @chenset 对,就是忘了这个,加上就好了。
    raysonx
    raysonx
    Jun 23, 2021 via iPad
    15
    路由器和虚拟机的 rp_filter 关掉了吗?路由器到到虚拟机是否有 NAT ?虚拟机到 vpn 的虚拟接口是否有 NAT ?
    如果远程的 vpn 服务器没有到你本地 192.168.1.0/24 网段的静态路由,你需要在虚拟机上设置到 vpn 虚拟接口的 NAT·

    类似 iptables -t nat -A POSTROUTING -o vpn 接口 -j MASQUERADE
    ysc3839
    ysc3839
    Jun 23, 2021
    16
    @mingl0280 依赖某些库的话确实不好办,不过还可以考虑使用 Docker 。没记错的话 Docker 有个选项是使用系统网络接口,也许是可以用的。
    mingl0280
    mingl0280
    OP
    Jun 23, 2021 via Android
    17
    @ysc3839 你意思是我本来 tar -xvf 一发加个 install 现在还得搞成 docker ?累不累啊……
    ysc3839
    ysc3839
    Jun 23, 2021
    18
    @mingl0280 我说的前提是防火墙很难配置,用一个开箱即用的系统更划算。
    我之前尝试在 Ubuntu 上配 OpenVPN Server,NAT 转发、DHCP 、DNS 、UPnP 各种东西要写一大堆配置文件,最终还是直接用 OpenWrt 了。因此以后我遇到要配置 NAT 之类功能的时候都会优先选择 OpenWrt 。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2107 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 61ms · UTC 14:48 · PVG 22:48 · LAX 06:48 · JFK 09:48
    ♥ Do have faith in what you're doing.