AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 457270
Accepted
Eduardo Lucio
Eduardo Lucio
Asked: 2018-07-20 09:28:57 +0800 CST2018-07-20 09:28:57 +0800 CST 2018-07-20 09:28:57 +0800 CST

使用一台服务器的局域网访问另一台服务器的局域网

  • 772

我在这里有点迷路,所以我请求你的帮助。=D

我有三台服务器:

1# - LANs A and B
2# - LANs B and C
3# - LANs C and D

如何使服务器 1# 通过 LAN B 访问使用 2# 服务器的 3# 服务器的 LAN D 中的 IP?

注意:我们可以使用firewall-cmd( iptables) 或 CentOS 7 上可用的任何其他功能。

为了显示

LAN B - 192.168.56.0/24
LAN C - 10.8.0.0/24
LAN D - 10.0.4.0/24

也就是说,一个 ping ( ping 10.0.4.4) 在服务器1# 'traversing' path B -> C -> D上运行。

注意:我已经做了很多很多测试,我真的不知道如何解决这个问题...... =[


编辑#1

为了让事情变得更容易,我决定用真实的信息来丰富这个线程。

服务器 #1
  • LAN A -> 忽略
  • LAN B -> enp0s17 (192.168.56.0/24)

    [root@localhost ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:12:26:e2:6c brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.122/24 brd 192.168.56.255 scope global noprefixroute enp0s17
           valid_lft forever preferred_lft forever
        inet6 fe80::a00:12ff:fe26:e26c/64 scope link 
           valid_lft forever preferred_lft forever
    
服务器 #2
  • LAN B -> enp0s17 (192.168.56.0/24)
  • LAN C -> tun0 (10.8.0.0/24)

    [root@localhost ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:2c:d1:58 brd ff:ff:ff:ff:ff:ff
        inet 10.0.2.10/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s8
           valid_lft 888sec preferred_lft 888sec
        inet6 fe80::2c5c:27aa:2636:8dc9/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:1c:a6:b9:59 brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.120/24 brd 192.168.56.255 scope global noprefixroute enp0s17
           valid_lft forever preferred_lft forever
        inet6 fe80::a00:1cff:fea6:b959/64 scope link 
           valid_lft forever preferred_lft forever
    5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
        link/none 
        inet 10.8.0.1/24 brd 10.8.0.255 scope global tun0
           valid_lft forever preferred_lft forever
        inet6 fe80::6a67:7379:b64:967c/64 scope link flags 800 
           valid_lft forever preferred_lft forever
    
服务器 #3
  • LAN C -> tun0 (10.8.0.0/24)
  • LAN D -> enp0s8 (10.0.4.0/24)

    [root@localhost ~]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:27:71:77:07 brd ff:ff:ff:ff:ff:ff
        inet 10.0.4.4/24 brd 10.0.4.255 scope global noprefixroute dynamic enp0s8
           valid_lft 1115sec preferred_lft 1115sec
        inet6 fe80::899f:8ca4:a7c6:25a7/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    3: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 08:00:ea:4e:40:ae brd ff:ff:ff:ff:ff:ff
        inet 192.168.56.121/24 brd 192.168.56.255 scope global noprefixroute enp0s17
           valid_lft forever preferred_lft forever
        inet6 fe80::a00:eaff:fe4e:40ae/64 scope link 
           valid_lft forever preferred_lft forever
    4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
        link/none 
        inet 10.8.0.6/24 brd 10.8.0.255 scope global tun0
           valid_lft forever preferred_lft forever
        inet6 fe80::48c2:b3cd:5845:5d35/64 scope link flags 800 
           valid_lft forever preferred_lft forever
    

根据@slm 的建议,我们做了以下事情:

服务器 #2 上的命令
$ echo -n "net.ipv4.ip_forward=1" >> /etc/sysctl.d/ip_forward.conf
$ sysctl -w net.ipv4.ip_forward=1

$ firewall-cmd --permanent --direct --passthrough ipv4 -t nat \
   -I POSTROUTING -o tun0 -j MASQUERADE -s 192.168.56.0/24
$ firewall-cmd --reload
服务器 #1 上的命令
$ ping 10.0.4.4
  • 问题ping 10.0.4.4->命令没有响应。
  • 重要-> 这些是我在虚拟机上进行的测试。
iptables firewall
  • 2 2 个回答
  • 554 Views

2 个回答

  • Voted
  1. Best Answer
    dirkt
    2018-07-20T22:32:05+08:002018-07-20T22:32:05+08:00

    这是一个非常基本的联网事情:如果你想连接不同的 LAN 网段,你需要一个路由器。你不需要 NAT,你不需要iptables,你只是路由,简单明了。

    出于某种原因,人们似乎认为路由至少需要 NAT 或iptables,而互联网上对此充满了建议。这真的没有必要,而且是我的一个小烦恼。

    你需要做的就是

    1) 在服务器 #2 上启用转发。这已经描述过(在 中添加文件/etc/sysctl.d/,重新启动并查看是否cat /proc/sys/net/ipv4/ip_forward显示1,或直接使用启用它echo 1 > /proc/sys/net/ipv4/ip_forward)。

    2)在所有想要使用网关的主机上设置路由。这是大多数人忘记的。所以在服务器 #1 上,你需要类似的东西

    ip route add 10.8.0.0/24 dev enp0s17 via 192.168.56.120
    ip route add 10.0.4.0/24 dev enp0s17 via 192.168.56.120
    

    在 LAN A 和 B 上想要到达 LAN C 和 D 的所有其他主机上也是如此。在服务器 #3(以及它所涉及的所有其他主机)上,您需要

    ip route add 192.168.56.0/24 dev tun0 via 10.8.0.1
    

    这告诉每个主机,当它想要到达远程 LAN 时,它应该通过服务器 #2,并使用本地 LAN 中服务器 #2 的适当 IP 地址。

    您可以测试路由是否适用ip route get a.b.c.d于服务器 #1 和服务器 #3。现在用ping. 如果仍然有问题,请使用tcpdump. 如果有防火墙阻碍,请根据需要禁用它。

    当一切正常时,使用某种方式使路由永久化,例如通过 DHCP 分发它们,或者将它们添加到合适的配置文件中。

    • 4
  2. slm
    2018-07-20T10:39:29+08:002018-07-20T10:39:29+08:00

    从外观上看,您是在描述 NAT。NAT(网络地址转换)是来自一个网络(LAN)的流量被伪装成来自另一台服务器(WAN)的地方,该服务器通常位于两个网络之间。

     server #1                                                                                             
     +-----------------+                                                                                   
     |                 |                                                                                   
     |                 |                                                                                   
     |         10.0.0.2|------+                                                                            
     |                 |      |            server #3 (NAT)              +--------------+                   
     +-----------------+    +-------+     +-----------------+           |              |                   
                            |switch |-----+10.0.0.1         |           |     (D)      |                   
                            +-------+     |                 |           |              |                   
     server #2                 |          | (C)   54.1.1.23 |-----------+ 54.1.1.1     |-----+Internet     
     +-----------------+       |          |                 |           |              |                   
     |                 |       |          +-----------------+           |              |                   
     |           (B)   |       |                                        |              |                   
     |         10.0.0.3|-------+                                        +--------------+                   
     |                 |                                                                                   
     +-----------------+ 
    

    本教程讨论了如何在 CentOS 7.x 上进行设置,标题为:在 CentOS 7 上部署出站 NAT 网关。

    这种设置的要点是将服务器配置在(C)具有来自两个不同网络的 2 个 IP 地址的 2 个 NIC 的位置。您还需要设置此服务器以便转发流量。Linux 系统的默认行为是不这样做:

    $ sudo sysctl -w net.ipv4.ip_forward=1
    $ sudo 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.d/ip_forward.conf'
    

    完成此操作后,您需要在系统上配置防火墙,(C)以便它也能转发流量:

    $ sudo firewall-cmd --permanent --direct --passthrough ipv4 -t nat \
        -I POSTROUTING -o eth0 -j MASQUERADE -s 10.0.0.0/24
    $ sudo firewall-cmd --reload
    
    • 3

相关问题

  • iptables 不过滤桥接流量

  • 持久的 iptables

  • Iptables 规则允许 appVM 通过配置为仅通过 QubesOS 中的 VPN 的 proxyVM

  • 通过远程端口转发通过 jumphost 进行 SSH 会话

  • 如何在 Linux 中让所有流量通过一个接口

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve