标签: nat

Linux 作为具有多个互联网提供商的路由器

Linux 作为路由器:我有 3 个 Internet 提供商,每个提供商都有自己的调制解调器。

Provider1,网关地址 192.168.1.1
连接linux路由器eth1 /192.168.1.2

Provider2,网关地址192.168.2.1
连接linux路由器eth2 /192.168.2.2

Provider3,网关地址192.168.3.1
连接linux路由器eth3 /192.168.3.2

                                                                           ________
                                                   +------------+         /
                                                   |            |        |
                            +----------------------+ Provider 1 +--------|
        __                  |192.168.1.2           |192.168.1.1 |       /
    ___/  \_         +------+-------+              +------------+      |
  _/        \__      |    eth1      |              +------------+      /
 /             \ eth0|              |192.168.2.2   |            |      |
|Client network -----+  ROUTER  eth2|--------------+ Provider 2 +------|     Internet
 \10.0.0.0/24 __/    |              |              |192.168.2.1 |      |
   \__     __/       |    eth3      |              +------------+      \
      \___/ …
Run Code Online (Sandbox Code Playgroud)

linux routing iptables nat iproute

18
推荐指数
1
解决办法
2万
查看次数

iptables: redirect local request with NAT

I'd like to redirect local requests to port which is translated with NAT. I have following rules:

iptables -t nat -A PREROUTING -p tcp --dport 9020 -j DNAT --to 10.0.3.11:80
Run Code Online (Sandbox Code Playgroud)

however request coming from localhost are rejected:

wget http://127.0.0.1:9020
Connecting to 127.0.0.1:9020... failed: Connection refused.
Run Code Online (Sandbox Code Playgroud)

当我从任何其他计算机连接时,它可以工作。有没有办法在不重新编译内核的情况下做到这一点CONFIG_IP_NF_NAT_LOCAL=yhttps://wiki.debian.org/Firewalls-local-port-redirection(似乎已过时)。

更新:

iptables -L -v -n --line-numbers -t nat

Chain PREROUTING (policy ACCEPT 26 packets, 3230 bytes)
num   pkts bytes target     prot opt in     out     source            destination    
4       0   0 …
Run Code Online (Sandbox Code Playgroud)

networking iptables nat

11
推荐指数
1
解决办法
1万
查看次数

为什么 NAT 不从机器的 TCP 和 UDP 端口池中保留端口?

我做了两个实验。这是他们俩的网络:

        [private network]     [public network]
    A -------------------- R ----------------- B
192.168.0.5     192.168.0.1|192.0.2.1       192.0.2.8
Run Code Online (Sandbox Code Playgroud)

一个的默认网关[R R有 IPv4 转发活动和以下 iptables 规则:

iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 50000
Run Code Online (Sandbox Code Playgroud)

目的是,来自A 的任何 TCP都将使用R的端口 50000屏蔽为 192.0.2.1 。

我在B上的端口 60000 上使用nc -4l 192.0.2.8 60000.

然后我从A打开了一个连接:nc -4 192.0.2.8 60000

A开始发送如下所示的数据包:

192.168.0.5:53269 -> 192.0.2.8:60000
Run Code Online (Sandbox Code Playgroud)

R将其翻译成

192.0.2.1:50000 -> 192.0.2.8:60000
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好。

然后我试图打开下面的客户端- [R :nc -4 192.0.2.8 60000 …

networking iptables nat

8
推荐指数
1
解决办法
1412
查看次数

iptables:“脚本”方式还是“*过滤器,规则,提交”方式?

我试图弄清楚 NAT 和 iptables 是如何工作的。当我处于学习它的反复试验阶段时,我发现了两个有点矛盾的方法。

一种方法是使用脚本iptables一个接一个地调用规则。该脚本似乎被命名和存储,以便它在系统启动期间尽早执行,我认为一个问题可能是其他脚本可能会在它之后调用并撤消其意图。我什至认为我在使用备份(00-firewall-old)保存并重命名原始脚本(00-firewall)时偶然做了一次。Howto 的示例脚本是:

#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

#
# delete all existing rules.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT


# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -i ! eth1 -j ACCEPT
iptables -A FORWARD -i eth1 …
Run Code Online (Sandbox Code Playgroud)

debian iptables nat

7
推荐指数
1
解决办法
1万
查看次数

NAT 反射(NAT 环回)如何工作?

我使用来自 OpenWRT 的自动生成规则作为 NAT 反射(NAT 环回)的示例。

所以让我们假设有一个网络 192.168.1.0/24 有两个主机(+ 路由器):192.168.1.100 和 192.168.1.200。路由器有两个接口 LAN(br-lan)和 WAN(eth0)。LAN 接口的 IP 为 192.168.1.1,WAN 接口的 IP 为 82.120.11.22(公共)。192.168.1.200 上有一个 www 服务器。我们想使用公共 IP 地址从 192.168.1.100 连接到 Web 服务器。

如果您想重定向 WAN->LAN 以便互联网上的人可以访问 Web 服务器,您可以将以下规则添加到 iptables:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.200:80
Run Code Online (Sandbox Code Playgroud)

我知道规则是什么意思。但是还有另外两条规则负责 NAT 反射。其中之一对我来说不像上面的那么清楚。所以第一条规则是这样的:

iptables -t nat -A PREROUTING -i br-lan -s 192.168.1.0/24 -d 82.120.11.22/32 -p tcp -m …
Run Code Online (Sandbox Code Playgroud)

iptables openwrt nat

7
推荐指数
1
解决办法
2万
查看次数

iptables 和 ip 路由表有什么区别?

最近在学习iptables,我知道有5个独立的表,其中两个是filter和nat表。而且我有时会查看netatat -rorroute表,我知道ip命令可以修改这个路由表。我对这两种表有点困惑:

  1. 路由表
  2. nat 和过滤表

他们都可以对数据包流量做一些事情,看起来他们可以做类似的事情,有人可以告诉我有什么区别吗?提前致谢。

linux ip iptables nat

7
推荐指数
1
解决办法
6388
查看次数

如何在 Linux/Ubuntu 下打开其他 VPN 连接内的 VPN 连接

在 Ubuntu 下可以有两个 VPN 连接吗?

设想:

  1. 我的组织相当大,拥有自己的庞大网络。
  2. 组织内的每个组都有自己的子网。
  3. 所有子网都通过路由器。子网可能有公共或私有 IP 地址,但在任何情况下,中央路由器都不会将任何 PPTP 或其他对构建 VPN 有用的有用流量路由到它们。
  4. 我们组的网络同样位于交换机/路由器后面。交换机有一个公共静态 IP 地址,我们子网中的计算机有私有 IP 地址。我无法从我们组织的网络外部通过 VPN 连接访问交换机/路由器。
  5. 组织通过专用访问节点提供对组织网络的 VPN 访问。
  6. 我们的交换机/路由器具有“VPN 通道”,可通向具有 VPN 服务器的计算机系统。
  7. 我有一个带有 VPN 服务器的系统,用于在我们的网络中运行 PPTP。如果我在组织网络内,我可以连接到它并建立 VPN 连接。

所以我想做的是:

  1. 通过 DSL 将我的家用电脑连接到互联网。这很简单。从这里,我无法访问组织网络中的任何计算机,也无法“看到”我们组的交换机(因为组织的路由器不路由或转发 VPN 连接)。
  2. 我想打开到组织网络的 VPN 连接。这又是容易和可能的。从这里,我可以看到我们组的交换机,但看不到我们组的网络内部的任何东西。
  3. 打开与交换机/路由器的 VPN 连接,然后将其转发到带有 VPN 服务器的系统。第二个 VPN 连接应该“嵌套”在第一个连接中。它将允许我连接到我们组网络内的应用程序,例如数据库和网络共享。我不知道如何让这个工作。

我尝试过但不起作用的事情:

  1. 尝试直接打开到我们组的交换机/路由器的公共 IP 地址的 VPN 连接。连接甚至从未到达交换机,即,不会由组织的路由器路由。

  2. 我尝试在我的 Linux/Ubuntu 系统中建立第一个 VPN 连接,在 Virtual Box 中启动另一个系统实例,然后在虚拟化系统中打开一个到我们网络的 VPN 连接。我认为这应该有效,但事实并非如此。

有什么方法可以创建一个 VPN 连接,而不是使用物理 DSL 连接,而是使用现有的 VPN 连接?

或者还有其他更简单的解决方案吗?我个人认为 VPN 是可行的方法,因为我需要访问多个网络服务(数据库、共享,甚至打印机),但我不确定。

linux routing vpn pptp nat

6
推荐指数
1
解决办法
5423
查看次数

在 Ubuntu 上通过物理网络向自己发送流量

我有一个双端口以太网 NIC,假设我已将两个端口连接到一个循环中,并将以下 IP 分配给 2 个以太网接口:

  • eth2 -> 192.168.2.1
  • eth3 -> 192.168.3.1

我想通过物理网络将流量从一个端口发送到另一个端口,例如 ping 192.168.3.1from 192.168.2.1. 但是,Linux 内核中的 TCP/IP 堆栈识别出这两个地址是本地地址,而是将流量发送到环回适配器,因此流量永远不会到达物理网络。

我最接近解决方案的是 Anastasov 的send-to-self patch,不幸的是,它自内核 3.6 以来已停止使用,因此它不适用于我的 Ubuntu 13.10(内核 3.11)。我已经尝试为 3.11 重写补丁,但我似乎无法在 Ubuntu 发行版中找到这些补丁:

  • 包括/linux/inetdevice.h
  • 网络/ipv4/devinet.c
  • net/ipv4/fib_frontend.c
  • 网络/ipv4/route.c
  • 文档/网络/ip-sysctl.txt

有没有办法让发送给自己的补丁工作,或者替代解决方案?

networking routing ip ethernet nat

6
推荐指数
2
解决办法
4475
查看次数

OpenVPN 和 OpenWRT 上的路由问题

我的家庭拓扑:

router1 (192.168.1.1) - D-Link dsl2540u 服务器,具有可从 Internet 获得的静态 IP(通过 ppoe 的 ADSL)。4个局域网端口。


router2 (192.168.1.2) - 带有 OpenWRT 的 D-Link DIR-300。扮演 WiFi 接入点的角色。4 个 LAN 端口 + WAN 端口。

                             家用 PC(通过 DHCP 连接到 router1)
                            |                           
互联网------路由器1-----
                            |
                             router2(OpenWRT 上的 OpenVPN 服务器)

在 router1 上,我设置了 NAT 虚拟服务器,并且可以通过 SSH 或 OpenVPN(443 端口上的 tcp)连接到我的路由器

DSL-2540u NAT 虚拟服务器

OpenVPN 服务器工作正常,连接后所有流量都通过 tun 接口。

OpenVPN 服务器配置(如果重要):

--脚本安全2
模式服务器
开发屯
端口 443
协议协议

服务器 10.0.0.0 255.255.255.0
推“重定向网关def1”
push "dhcp-option DNS 192.168.1.1" # 将此更改为路由器的 LAN IP 地址
push "route 192.168.1.0 255.255.255.0" …

firewall openwrt openvpn route nat

6
推荐指数
1
解决办法
2167
查看次数

无法通过 iptables PREROUTING 链使 NAT 工作

所以,我们不关心为什么,更关心如何,我想看看有没有人知道我在这里哪里出错了。

基本上,我想将所有前往端口 80 的数据包转发到我已别名为环回设备 (169.254.169.254) 的 IP 上,以便转发到另一个 IP 上的端口 8080,这恰好是该 IP 的公共 IP同一个框(我们将使用 1.1.1.1 来解决这个问题)。这样做,我应该[表面上]能够跑

telnet 169.254.169.254 80
Run Code Online (Sandbox Code Playgroud)

并达到 1.1.1.1:8080,但是,这并没有发生。

这是我在 iptables 中的 nat 表:

~# iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 66 packets, 3857 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  *      *       0.0.0.0/0            169.254.169.254      tcp dpt:80 to:1.1.1.1:8080

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy …
Run Code Online (Sandbox Code Playgroud)

iptables nat

6
推荐指数
1
解决办法
7656
查看次数

标签 统计

nat ×10

iptables ×7

linux ×3

networking ×3

routing ×3

ip ×2

openwrt ×2

debian ×1

ethernet ×1

firewall ×1

iproute ×1

openvpn ×1

pptp ×1

route ×1

vpn ×1