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

关于虚拟网卡问题

  •  
  •   Grandia · 2019-02-07 17:36:26 +08:00 · 3411 次点击
    这是一个创建于 2145 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有没有大牛能够帮忙解答如下问题?知识薄弱,都不知道如何搜索好⊙﹏⊙b !

    路由: 192.168.1.1 联网

    机器 A:

     物理网卡   eth0  192.168.1.2/24,  连接路由器
    
     虚拟网卡  veth0  192.168.2.2/24,已经通过 eth0 联网
    

    机器 B:

     物理网卡   eht0  192.168.1.2/24,连接路由器
    

    问题 1: 机器 A 如何配置能够通过 veth0 上网

    问题 2: 机器 B 如何通过机器 A 的 veth0 上网

    第 1 条附言  ·  2019-02-07 21:30:03 +08:00
    感谢各位,tun/tap 建立的,连到 vps,已经触雷,暂时试不了。
    9 条回复    2019-02-08 14:45:38 +08:00
    batman2010
        1
    batman2010  
       2019-02-07 17:52:59 +08:00 via iPad
    ip 冲突?
    mchong
        2
    mchong  
       2019-02-07 17:55:50 +08:00
    不能吧。你的 A 机器 veth0 的 ip 配置和路由都不在一个网段上,怎么上?
    koebehshian
        3
    koebehshian  
       2019-02-07 17:56:27 +08:00 via Android
    问题一,通过 route 命令配置默认路由
    ysc3839
        4
    ysc3839  
       2019-02-07 18:03:42 +08:00 via Android
    你这个 veth0 是怎么弄出来的?
    henglinli
        5
    henglinli  
       2019-02-07 18:15:58 +08:00
    机器 A 加一个 bridge 应该就可以了,后者机器 A 开启 ip_forward 试试看。
    sysctl -w net.ipv4.ip_forward=1
    参考下:
    https://wiki.gentoo.org/wiki/Network_bridge
    https://wiki.gentoo.org/wiki/Ethernet_plus_WiFi_Bridge_Router_and_Firewall
    feather12315
        6
    feather12315  
       2019-02-07 18:24:29 +08:00 via Android
    veth 是成对出现的。比如 veth0 与 veth1,发往 veth0 的数据包只能由另一个 veth1 接收。
    通过网桥桥接 eth0 与 veth1,可以另发往 veth0 的数据包到达 eth0 端口。
    feather12315
        7
    feather12315  
       2019-02-07 18:26:04 +08:00 via Android   ❤️ 1
    @ysc3839 #4 veth 是网络虚拟化的一种,虚拟的是链路层以太网,使用 ip link 可以创建。
    Leigg
        8
    Leigg  
       2019-02-07 18:45:13 +08:00 via iPhone
    A 通过 nat,B 和 A 处于同一网络 ip 冲突怎么上网?
    thomaspaine
        9
    thomaspaine  
       2019-02-08 14:45:38 +08:00
    大兄弟是不是搭了一套 vpn 想做个二级路由翻墙啊,虚拟网卡是 vpn 创的

    sysctl -w net.ipv4.ip_forward=1

    iptables -t nat -A POSTROUTING -o veth0 -j MASQUERADE
    iptables -t filter -A FORWARD -i veth0 -j ACCEPT
    iptables -A FORWARD -o veth0 -j ACCEPT
    iptables -t filter -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

    对了,默认路由用你 veth 那个,这个我就不写命令了啊

    这样 A 机器上所有流量走 veth,B 机器设置默认网关为 192.168.1.2, 所有流量走 veth,相当于把 A 当路由器了

    你且试试?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5910 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 623ms · UTC 02:54 · PVG 10:54 · LAX 18:54 · JFK 21:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.