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
    • 最新
    • 标签
主页 / server / 问题 / 1159581
Accepted
inference
inference
Asked: 2024-05-18 03:33:52 +0800 CST2024-05-18 03:33:52 +0800 CST 2024-05-18 03:33:52 +0800 CST

在 Linux 路由器上配置来自 ISP 的路由静态 IP 地址

  • 772

我在商业计划中从 ISP 收到了 4 个静态 IP 地址,这些地址将在 Linux 驱动的路由器上使用并通过命令进行配置ip。我以前的 ISP 给了我 4 /32 个 IP 地址,只需将其添加到 WAN 接口即可,并且可以相互独立工作;然而,我的新 ISP 给了我一个由 4 个 IP 地址组成的“路由”/30 块。

error: nexthop has invalid gateway当我收到或添加 IP 地址但无法解析任何外部 IP 地址或目标主机时,我一直无法弄清楚如何添加这些 IP 地址。

我的新ISP的网络配置如下:

  • 广域网:1.1.1.2/30
  • 网关:1.1.1.1/30
  • 路由:1.1.1.4/30

我的ISP声称可能不需要网关地址,并且使用WAN地址作为上游。我的路由器有 2 个网卡; 1 个用于 LAN,1 个用于 WAN。我也用它iptables来配置防火墙。

如何通过ip命令在 Linux 系统上正确配置此设置?

linux-networking
  • 2 2 个回答
  • 87 Views

2 个回答

  • Voted
  1. Max
    2024-05-18T18:00:27+08:002024-05-18T18:00:27+08:00

    要使用提供的网络信息配置 Linux 路由器,您需要使用给定的 /30 地址设置 WAN 接口,然后通过它路由 /30 路由块。

    1:配置WAN接口

    sudo ip addr add 1.1.1.2/30 dev eth0
    sudo ip link set eth0 up
    

    将 eth0 替换为您的 WAN 接口的实际名称。

    添加默认路由:

    由于您的 ISP 提到可能不需要网关并且 WAN 地址应用作上游,因此让我们使用提供的网关设置默认路由:

    sudo ip route add default via 1.1.1.1 dev eth0
    

    2:配置路由块将路由/30块添加到WAN接口:

    您需要确保这些地址可供使用。这涉及将它们添加到虚拟接口或只是确保它们正确路由。在这里,为了简单起见,我们将它们直接添加到 WAN 接口:

    sudo ip addr add 1.1.1.4/30 dev eth0
    

    为路由块设置路由:

    如果您需要通过 WAN 接口路由来自这些 IP 地址的流量,则需要确保它们正确路由。假设 eth1 是您的 LAN 接口:

    sudo ip route add 1.1.1.4/30 dev eth1
    

    3:IP转发和防火墙配置启用IP转发:

    要允许路由器在接口之间转发数据包,请启用 IP 转发:

    echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
    

    要使此更改永久生效,请在 /etc/sysctl.conf 中添加或修改以下行:

    net.ipv4.ip_forward = 1
    

    配置 NAT 和转发的 iptables:

    如果您计划与 LAN 上的设备共享路由 IP 块,则需要设置 iptables 来处理 NAT(网络地址转换):

    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
    sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state   ESTABLISHED,RELATED -j ACCEPT
    

    验证您的 IP 地址和路由配置:

    ip addr show
    ip route show
    

    Ping 外部 IP 地址以确保您的路由正常工作:

    ping 8.8.8.8
    

    保存您的配置:

    确保使用网络管理器或创建适当的脚本在启动时运行来保存您的 IP 和路由配置。

    简而言之,以下是我们所做工作的总结:

    # Set up WAN interface
    sudo ip addr add 1.1.1.2/30 dev eth0
    sudo ip link set eth0 up
    sudo ip route add default via 1.1.1.1 dev eth0
    
    # Add routed block
    sudo ip addr add 1.1.1.4/30 dev eth0
    sudo ip route add 1.1.1.4/30 dev eth1
    
    # Enable IP forwarding
    echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
    sudo sysctl -w net.ipv4.ip_forward=1
    
    # Configure iptables for NAT and forwarding
    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
    sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
    

    此设置应该使您的 Linux 路由器能够正确处理给定的静态 IP 地址并正确路由流量。

    • 2
  2. Best Answer
    Max
    2024-05-20T16:39:41+08:002024-05-20T16:39:41+08:00

    这是之前的答案,经过一些改进,它应该有效:

    # Configure WAN interface
    sudo ip addr add 1.1.1.2/30 dev eth0
    sudo ip link set eth0 up
    
    # Optionally add routed IP addresses
    sudo ip addr add 1.1.1.4/32 dev eth0
    sudo ip addr add 1.1.1.5/32 dev eth0
    sudo ip addr add 1.1.1.6/32 dev eth0
    sudo ip addr add 1.1.1.7/32 dev eth0
    
    # Enable IP forwarding
    echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
    sudo sysctl -w net.ipv4.ip_forward=1
    
    # SNAT rules
    sudo iptables -t nat -A POSTROUTING -s 10.1.0.2/32 -o eth0 -j SNAT --to 1.1.1.4
    sudo iptables -t nat -A POSTROUTING -s 10.1.0.3/32 -o eth0 -j SNAT --to 1.1.1.5
    sudo iptables -t nat -A POSTROUTING -s 10.1.0.4/32 -o eth0 -j SNAT --to 1.1.1.6
    sudo iptables -t nat -A POSTROUTING -s 10.1.0.5/32 -o eth0 -j SNAT --to 1.1.1.7
    
    # DNAT rules
    sudo iptables -t nat -A PREROUTING -d 1.1.1.4 -j DNAT --to-destination 10.1.0.2
    sudo iptables -t nat -A PREROUTING -d 1.1.1.5 -j DNAT --to-destination 10.1.0.3
    sudo iptables -t nat -A PREROUTING -d 1.1.1.6 -j DNAT --to-destination 10.1.0.4
    sudo iptables -t nat -A PREROUTING -d 1.1.1.7 -j DNAT --to-destination 10.1.0.5
    
    # Forwarding rules
    sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
    sudo iptables -A FORWARD -i eth0 -o eth1 -d 10.1.0.0/24 -j ACCEPT
    
    # Save iptables configuration (adjust based on your distribution)
    sudo sh -c "iptables-save > /etc/iptables/rules.v4"
    

    我希望它有帮助,它应该有效。

    • 0

相关问题

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve