V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
mingl0280
V2EX  ›  Linux

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

  •  
  •   mingl0280 · 123 天前 · 1671 次点击
    这是一个创建于 123 天前的主题,其中的信息可能已经有所发展或是发生改变。
    事情是这样的,我这里的 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 条回复    2021-06-23 17:33:23 +08:00
    snuglove
        1
    snuglove   123 天前 via Android
    所以你应该贴出你的这条防火墙配置
    mingl0280
        2
    mingl0280   123 天前
    @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   123 天前 via iPhone
    1.88 的路由贴出来
    archean
        4
    archean   123 天前
    是不是应该配个 MASQUERADE,不然包怎么回来
    ysc3839
        5
    ysc3839   122 天前 via Android
    只是为了路由转发的话建议使用 OpenWrt,因为相关配置基本是开箱即用的。
    chenset
        6
    chenset   122 天前
    看下是不是缺这个

    ```

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

    ```
    mingl0280
        7
    mingl0280   122 天前 via Android
    @ysc3839 openvpn 那我就得找厂商要单独的 vpn 软件安装包了,基本上算做梦
    Jirajine
        8
    Jirajine   122 天前 via Android
    别忘了回程路由,图省事 masquerade 一下也行。
    no1xsyzy
        9
    no1xsyzy   122 天前
    你 ...88 的 Network Manager 是什么?
    https://wiki.archlinux.org/title/Network_configuration#Network_managers
    networkd 需要单独配置一下
    ysc3839
        10
    ysc3839   122 天前
    @mingl0280 什么意思?我没有提 OpenVPN,我说的是 OpenWrt 。
    mingl0280
        11
    mingl0280   122 天前
    @ysc3839 打错了,OpenWRT,vpn 软件不支持,得找厂家重新做,显然是不可能的。
    ysc3839
        12
    ysc3839   122 天前
    @mingl0280 都是 Linux 系统,不会不支持吧?具体是怎么个不支持呢?
    mingl0280
        13
    mingl0280   122 天前
    @ysc3839 二进制包,tar.gz 那种,没法在 openwrt 上用(库都不一样)
    mingl0280
        14
    mingl0280   122 天前
    @chenset 对,就是忘了这个,加上就好了。
    raysonx
        15
    raysonx   122 天前 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   122 天前
    @mingl0280 依赖某些库的话确实不好办,不过还可以考虑使用 Docker 。没记错的话 Docker 有个选项是使用系统网络接口,也许是可以用的。
    mingl0280
        17
    mingl0280   122 天前 via Android
    @ysc3839 你意思是我本来 tar -xvf 一发加个 install 现在还得搞成 docker ?累不累啊……
    ysc3839
        18
    ysc3839   122 天前
    @mingl0280 我说的前提是防火墙很难配置,用一个开箱即用的系统更划算。
    我之前尝试在 Ubuntu 上配 OpenVPN Server,NAT 转发、DHCP 、DNS 、UPnP 各种东西要写一大堆配置文件,最终还是直接用 OpenWrt 了。因此以后我遇到要配置 NAT 之类功能的时候都会优先选择 OpenWrt 。
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1513 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:57 · PVG 08:57 · LAX 17:57 · JFK 20:57
    ♥ Do have faith in what you're doing.