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
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1533984
Accepted
JBruyet
JBruyet
Asked: 2024-11-27 04:41:13 +0800 CST2024-11-27 04:41:13 +0800 CST 2024-11-27 04:41:13 +0800 CST

我无法再使用 iptables 连接到互联网

  • 772

下午好。这是我家的网络图:

            Internal
           Interface   
x.x.1.14    x.x.1.99                     
---------   ---------   ---------   ----------
|       |   |       |   |       |   |        |
| Comp1 |---|Rasp Pi|---|Router |---|Internet|
|       |   |       | | |       |   |        |
---------   --------- | ---------   ----------
            x.x.0.123 |   x.x.0.1      8.8.8.8
            External  |
           Interface  | ---------
                      | |       |
                      |-| Comp2 |
                        |       |
                        ---------
                        x.x.0.135

我在家里连接了两个网络(一个 WiFi 和一个有线网络),在 Raspberry Pi 上的 Ubuntu 24.04.1 LTS 上运行 iptables。从 Comp1,我能够 ping Comp2 和互联网,但后来我在 Pi 上做了一些愚蠢的事情(更改了 root 密码并扔掉了便签),不得不重新设置我的 Pi。我重新设置了 Pi,使用相同的网络设置,现在我可以从 Comp1 再次 ping Comp2,但不能上网。我第一次尝试让 Pi 工作时输入了大量笔记,但到目前为止,我所做的一切都无法让我连接到互联网。以下是我迄今为止尝试过的列表:

没有

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

没有

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

没有

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

没有

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

没有

sudo iptables -I FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -j ACCEPT
sudo iptables -I FORWARD -s 192.168.1.0/24 -d 192.168.0.0/24 -j ACCEPT

没有

sudo iptables -A FORWARD -i 192.168.0.123 -o 192.168.1.99 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i 192.168.1.99 -o 192.168.0.123 -j ACCEPT

没有

sudo iptables -I FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -j ACCEPT
sudo iptables -I FORWARD -s 192.168.1.0/24 -d 192.168.0.0/24 -j ACCEPT

没有

sudo iptables -I FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -j ACCEPT
sudo iptables -I FORWARD -s 192.168.1.0/24 -d 192.168.0.0/24 -j ACCEPT

我还在 Linux 机器上添加了到第二个网络的路由:

$ sudo ip route add 192.168.0.0/24 via 192.168.1.99

我尝试了翻转,因为第一次我犯了一个错误,翻转了我在互联网上找到的 IP 标签,结果成功了。那么,有人能看出我做错了什么吗?或者我遗漏了什么?

谢谢,

乔


感谢您的快速回复。好的,以下是信息:

Comp1-Linux ens160 是 192.168.1.14

Pi-Linux eth0 是 192.168.1.99 wlan0 是 192.168.0.123

Comp2-Windows 192.168.0.135

iptables-保存

# Generated by iptables-save v1.8.10 (nf_tables) on Tue Nov 26 12:54:31 2024
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [204777:66752196]
:OUTPUT ACCEPT [0:0]
-A FORWARD -s 192.168.1.0/24 -d 192.168.0.0/24 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -j ACCEPT
COMMIT
# Completed on Tue Nov 26 12:54:31 2024
# Generated by iptables-save v1.8.10 (nf_tables) on Tue Nov 26 12:54:31 2024
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [117749:8274546]
-A POSTROUTING -o 192.168.0.123 -j MASQUERADE
-A POSTROUTING -o 192.168.0.123 -j MASQUERADE
COMMIT
# Completed on Tue Nov 26 12:54:31 2024

乔


sysctl -p 的输出如下:

jfxb@Pi5:~$ sudo sysctl -p
[sudo] password for jfxb:
net.ipv4.ip_forward = 1
jfxb@Pi5:~$
networking
  • 1 1 个回答
  • 73 Views

1 个回答

  • Voted
  1. Best Answer
    mpboden
    2024-12-04T14:51:07+08:002024-12-04T14:51:07+08:00

    您错误地输入了nat表的 iptables 规则。在所有示例中,您都使用 IP 地址而不是接口名称作为-o选项。

    查看iptables(8)的手册页:

    [!] -o, --out-interface name
                  Name of an interface via which a packet is going to be sent (for  packets  entering
                  the  FORWARD, OUTPUT and POSTROUTING chains).  When the "!" argument is used before
                  the interface name, the sense is inverted.  If the interface name ends  in  a  "+",
                  then  any  interface  which  begins  with  this name will match.  If this option is
                  omitted, any interface name will match.
    

    您的第一个例子输入错误,如下所示:

    sudo iptables -t nat -A POSTROUTING -o 192.168.0.123 -j MASQUERADE
    

    因此,将 IP 地址更改为接口名称。对于您的设置,连接到路由器的 IP 地址为 的接口192.168.0.123是wlan0。

    sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
    

    根据iptables-save您在帖子中提供的输出,您对 INPUT、OUTPUT 和 FORWARD 链的默认策略是 ACCEPT。因此,您定义的 FORWARD 规则是不必要的:

    -A FORWARD -s 192.168.1.0/24 -d 192.168.0.0/24 -j ACCEPT
    -A FORWARD -s 192.168.0.0/24 -d 192.168.1.0/24 -j ACCEPT
    

    您的nat表中还有两条不正确的规则:

    -A POSTROUTING -o 192.168.0.123 -j MASQUERADE
    -A POSTROUTING -o 192.168.0.123 -j MASQUERADE
    

    因此,在输入正确的nat规则之前,请刷新所有链:

    sudo iptables -F
    sudo iptables -F -t nat
    

    为了使您的 iptables 规则在每次重启时都保持不变,您需要先安装iptables-persistent:

    sudo apt install iptables-persistent
    

    然后,保存当前规则:

    sudo sh -c "iptables-save > /etc/iptables/rules.v4"
    

    最后,看来您已经在内核中启用了 IP 转发,但我将在这里添加它以使其完整:

    sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
    
    • 2

相关问题

  • 如何设置 VLAN 转发?

  • 如何将主机 Ubuntu 上的 VPN (tun0) 网络适配器映射到 VirtualBox 来宾 Windows?

  • 如何限制下载/上传带宽?

  • 如何通过 Windows 网络共享文件?

  • 面板小程序以文本形式显示当前网络流量?

Sidebar

Stats

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

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve