V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
mingl0280
V2EX  ›  Linux

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

  •  
  •   mingl0280 ·
    mingl0280 · Jun 23, 2021 · 3377 views
    This topic created in 1774 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
        1
    snuglove  
       Jun 23, 2021 via Android
    所以你应该贴出你的这条防火墙配置
    mingl0280
        2
    mingl0280  
    OP
       Jun 23, 2021
    @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
        3
    0gys  
       Jun 23, 2021 via iPhone
    1.88 的路由贴出来
    archean
        4
    archean  
       Jun 23, 2021
    是不是应该配个 MASQUERADE,不然包怎么回来
    ysc3839
        5
    ysc3839  
       Jun 23, 2021 via Android
    只是为了路由转发的话建议使用 OpenWrt,因为相关配置基本是开箱即用的。
    chenset
        6
    chenset  
       Jun 23, 2021
    看下是不是缺这个

    ```

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

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

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