标签: nat

将流量从 TUN 设备(C++ 后端)转发到默认网关

以下问题只是我遇到问题的更大解决方案的一部分。到目前为止,所有其他元素似乎都在工作,所以我将尝试描述我有问题的非常小的部分。

我有一台 linux 机器,带有tun0(隧道接口)和eth0(witch 是我默认的互联网网关)。

目标:我的目标是接收从 tun0 传入的数据包,并将它们转发到默认网关。所以实际上非常简单的 NAT 案例,我想与伪造物理接口的 tun0“共享”互联网。

Tun 是使用创建的

sudo openvpn --mktun --dev tun0 --user USER
sudo ip addr add 10.2.0.1/24 dev tun0
sudo ip link set tun0 up
Run Code Online (Sandbox Code Playgroud)

所以我让它启动并运行,我可以 ping 它等等。此外,我有 C++ 应用程序,它连接到这个 TUN 设备,可以读取和写入它。(fti:这是我遵循的教程:http : //backreference.org/2010/03/26/tuntap-interface-tutorial/

我将一些对 8.8.8.8 发出的正确 ICMP(ping)请求转储到 C++ 中的字节数组中。现在,使用我的程序将它写入 tun0 设备。ICMP 请求有

  • source (10.2.0.10) - 所以内核知道返回的路由(同一个子网)
  • 目的地 (8.8.8.8) - Google 的 DNS
  • 正确的校验和等(在 Wireshark /TShark 中,它在 tun0 上正确显示)

然后,我有以下路线:

iptables -F # flush
iptables …
Run Code Online (Sandbox Code Playgroud)

nat routing icmp forwarding tun

10
推荐指数
1
解决办法
2031
查看次数

当代理足够时为什么需要nat?

我的机器连接在本地局域网中。连接到互联网流量通过代理服务器。我对代理服务器的理解是它代表原始请求发送者发送请求。所以当服务器回复时,它认为它是客户端将回复发送给代理。然后代理将回复转发到我的机器。
网络地址转换为例。您的请求通过 nat 路由器。然后 nat 路由器为您提供一个公共 IP 地址并将此映射存储在其表中。回复(来自服务器)被发送到这个分配的公共地址。nat 路由器从表中解析为您的本地 IP 地址并将回复转发到您的机器。
我的问题为什么当代理本身能够调解流量并为您提供对互联网的访问时需要 nat?

networking router nat proxy

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

iptables:伪装端口转发不起作用

我的端口转发有一些问题。NAT 似乎工作正常,一个端口转发似乎工作(udp 端口​​ 7887 到机器 192.168.1.100)。但不是其他人。

我怀疑这是否重要,但 eth1 和 eth2 位于双端口 NIC 上。

WAN 互联网访问由 dhcp 提供,因此如果可能,解决方案应该独立于 WAN_IP。

/opt/firewall.sh

#!/bin/sh

WAN="eth1"
LAN="eth2"

#ifconfig $LAN up
#ifconfig $LAN 192.168.1.1 netmask 255.255.255.0


echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -i $LAN …
Run Code Online (Sandbox Code Playgroud)

nat iptables port-forwarding

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

AWS VPC + IPtables + NAT:端口转发不起作用

昨天,我在这里发布了一个问题但我认为我的话不够清楚。顺便说一句,这个问题不是重复的。

我有如下 AWS VPC 设置。

在此处输入图片说明

目标/问题:从 Internet SSH 到服务器 A。它不工作。

服务器 A 在私有子网中,因此我想在我的 NAT 实例上启用 iptables NATing,以便我可以直接从 Internet ssh 到服务器 A

我正在关注这个这个

我在 NAT 实例上运行以下命令:

NAT# iptables -t nat -A PREROUTING  -p tcp --dport 2222 -j DNAT --to-destination 10.0.1.243:22
Run Code Online (Sandbox Code Playgroud)

在 NAT 实例上启用 IP 转发:

NAT# sysctl  -p
net.ipv4.ip_forward = 1
Run Code Online (Sandbox Code Playgroud)

MASQUERADE 正在 NAT 实例上运行:

NAT# iptables -t nat -vnL POSTROUTING
Chain POSTROUTING (policy ACCEPT 6 packets, 312 bytes)
 pkts bytes target     prot …
Run Code Online (Sandbox Code Playgroud)

linux nat iptables linux-networking amazon-vpc

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

使用 Firewalld 为 VM 配置 1:1 Nat

我已经在我的服务器中设置了 2 个虚拟机,我正在尝试在 CentOS 7 上使用 firewalld 为它们设置 1:1 NAT。目前两个虚拟机都在一个虚拟网桥(virbr0、vnet0、vnet1)后面,我已经制作了副本与它们一起使用的每个 IP 的 NIC。我想这样设置:

eth0:0(公网IP)-----> vnet0(内部IP);eth0:1 (公网IP) -----> vnet1 (内部IP)

我理解的方式是我正在寻找 1:1 NAT,但我不确定如何设置它。我最初使用网桥配置了所有内容,但托管服务提供商不允许网络上的网桥,虚拟网卡的虚构 mac 将所有内容都从网络中删除。

我已经尝试了一些东西,但我对 firewalld 还不是很满意。

nat virtual-machines bridge kvm-virtualization centos7

10
推荐指数
1
解决办法
597
查看次数

带有内部端口重定向的 Windows 7,可能吗?

我收到了我们的一位开发人员的请求,我在解决问题时遇到了问题。

在办公室,他们使用 linux 桌面,我可以通过 iptables nat 将 localhost:80 转发到 localhost:8080。他们想要的是在 Windows 7 中在家中使用相同的东西。

我得到了我认为的两种解决方法。一种是重新配置 jboss webserver 和所有 webapps url(乱七八糟)。另一个是找到一种将本地主机端口 8080 重定向/nat 到端口 80 的方法。虽然在 Windows 7 中我不确定如何执行此操作。

任何人都知道如何做第二个?

windows-7 nat port-forwarding

9
推荐指数
2
解决办法
3万
查看次数

双方都在 NAT 后面的 strongSwan 设置

我正在尝试在家中设置 strongSwan 服务器并从另一个网络连接到它。假设sun是 VPN 服务器,venus是客户端。这两个sunvenus是NAT网络后面。sun不是我家庭网络的网关。但是,端口 4500、500 和 50 (UDP) 被转发到sun.

ipsec.conf (sun)

# ipsec.conf - strongSwan IPsec configuration file

# basic configuration

config setup
    charonstart=yes
    plutostart=no

conn venus
     left=%any
     leftcert=sunCert.pem
     right=%any
     leftsubnet=10.135.1.0/24
     rightid="C=IL, O=KrustyKrab, CN=venus"
     keyexchange=ikev2
     auto=add
     type=tunnel
     mobike=no

include /var/lib/strongswan/ipsec.conf.inc
Run Code Online (Sandbox Code Playgroud)

ipsec.conf(金星)

# ipsec.conf - strongSwan IPsec configuration file

# basic configuration

config setup
    charonstart=yes
    plutostart=no

conn krustykrab
     left=%defaultroute
     leftsourceip=%config
     leftid="C=IL, O=KrustyKrab, CN=venus"
     leftcert=venusCert.pem
     right=x.x.x.x # My home …
Run Code Online (Sandbox Code Playgroud)

vpn nat ipsec strongswan

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

是否可以配置反向 VPN 隧道?

基本上,我的目标是拥有一个 100% 可移植和独立的服务器。我正在使用由太阳能电池板和电池供电的 Raspberry Pi 构建它,并将使用 4g 热点连接到互联网。它只需要有 2 个功能,一个 SSH 服务和一个 VPN 服务。

这是我的问题。

我最初开始这个项目时认为我最大的问题将是 IP 漫游。我为自己设置了一个动态 DNS 域并编写了一个每 60 秒更新一次的 cron。然后我将我的热点端口转发到 Pi(热点基本上是一个路由器,而 pi 有一个 wifi 加密狗)。

但是,我无法使用它的公共 IP 连接到热点路由器。就在那时,我意识到所有 4G LTE 设备都在子网上接收到更大 NAT 的 IP。这显然是4G的新做法。用于接收可访问公共 IP 的 3G 设备。

基本上我需要一种方法来访问没有唯一 IP 的 VPN 服务器。

VPN 服务器是否可以与客户端建立连接,有点像反向 SSH 隧道?

就像它可以连续轮询一组 IP 地址(或动态 DNS 域)直到其中一个接受连接,或者轮询另一台服务器,该服务器将包含当前“想要”连接的 IP 列表(这些 IP 基本上将轮询该服务器以请求 VPN 连接)。

我知道它很迟钝并且破坏了客户端服务器模型,但我在这里有点绝望。是否可以?

vpn nat ip

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

ELB 是否也路由 AWS 中的出站回复流量

我一直在尝试了解路由在具有公有/私有子网的 AWS VPC 中是如何工作的。

我有一个亚马逊推荐的设置,在公共子网中有一个 ELB 和 NAT,在私有子网中有一个 web 服务器。我按照http://blogs.aws.amazon.com/security/blog/tag/NAT配置了安全组 (SG) ,并且一切正常。伟大的!

具有 Amazon VPC 配置的参考架构

我还不明白的是 HTTP 回复是如何从上述架构中的网络服务器实例返回的。

所以一个网络请求通过 HTTP 从公共互联网进来,80 次命中 ELB,ELB 将它带到网络服务器的私有 IP,很酷。现在网络服务器必须回复。据我了解,回复将通过不同的更高 TCP 端口 (1024-65535)。NAT SG 只允许通过端口 80 和 443 的出站流量。那么此回复如何返回公共 Internet。它不能通过 NAT。这是否意味着回复通过 ELB 返回。Amazon 图表未将 ELB 流量方向箭头指示为双向,ELB 文档也未说明 ELB 的行为类似于有状态 NAT。可以?

nat amazon-web-services amazon-vpc

9
推荐指数
1
解决办法
8055
查看次数

NAT:如果两台主机向同一个IP:PORT发起连接,使用相同的源PORT,路由器如何处理?

我只是在想,这个想法出现在我的脑海中。

假设我的局域网中有主机 A 和 B。我有一个路由器和一个互联网上的主机 C。我知道在启动连接时,源端口是随机选择的,但是如果两个主机在启动到同一主机时选择相同的端口会发生什么?

A:10123 -> C:80
B:10123 -> C:80
Run Code Online (Sandbox Code Playgroud)

路由器如何知道每个数据包属于哪个数据包?

干杯。

networking router nat

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