标签: ip-forwarding

将 Open vSwitch 交换机连接到真实网络:iptables masquerade

我正在使用 Open vSwitch 在 vi​​rtualBox 来宾计算机之间创建交换网络,并且我希望主机操作系统(Ubuntu 12.04)加入该网络并将其配置为该虚拟网络的网关:

首先,我创建了一个 vswitch 并添加了端口以连接设备(虚拟机将它们用作桥接接口):

ovs-vsctl add-br sw0
ovs-vsctl add-port sw0 tap0
Run Code Online (Sandbox Code Playgroud)

之后,我静态设置了 Lubuntu 12.04 虚拟机的 ip:

ifconfig eth0 192.168.1.3/24 up
route add -net 0.0.0.0/0 gw 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

在主机 os 端,我还设置了 ip 地址:

ifconfig sw0 192.168.1.1/24 up
Run Code Online (Sandbox Code Playgroud)

此时,我可以从 Lubunut ping 到 Ubunutu。我现在想在主机中使用 IP 伪装将流量从网络 192.168.1.0/24 转发到我的物理接口(连接到 Internet):

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE
Run Code Online (Sandbox Code Playgroud)

因此,从 Lubuntu(虚拟机),我可以 ping Ubuntu eth1 接口,但无法访问真实网络(例如:真实 LAN 上的网关),我尝试过:

nslookup google.com
dig @8.8.8.8 yahoo.com
dig @192.168.30.1 …
Run Code Online (Sandbox Code Playgroud)

iptables ip-forwarding openvswitch

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

将 IP 映射到另一个 IP

假设以下场景,如果我有一台本地机器 (A),则使用 B 的内部 IP 请求另一台机器 (B),而不考虑端口。但是A和B不在同一个网络上,但是B有一个公网IP。我想要做的是当使用 B 的内部 IP 从机器 A 请求机器 B 时,然后发生一些路由并将 B 的内部 IP 转换为其公共 IP。鉴于两台机器的操作系统是 Ubuntu 14.04,如何实现此功能?

ubuntu iptables ip-routing hosts-file ip-forwarding

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

如何在 MacOS X 中启用 IP 转发?

在 MacOS X 中启用 IP 转发的正确方法是什么?

更具体地说,以下两个 Linux 命令的 MacOS X 命令行等效项是什么:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

iptables mac-osx ipfw ip-forwarding

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

如何将所有流量转发/NAT 到一个接口/IP 到远程 IP?

我有一个“服务器 A”,它附加了多个 IP,如下所示:

eth0:0 1.1.1.1
eth0:1 1.1.1.2
eth0:2 1.1.1.3
Run Code Online (Sandbox Code Playgroud)

我有另一个“服务器 B”,它也附加了多个 IP,如下所示:

eth0:0 2.2.2.1
eth0:1 2.2.2.2
eth0:2 2.2.2.3
Run Code Online (Sandbox Code Playgroud)

现在,我想在“服务器 A”上设置 iptables,以将“eth0:2”上的所有传入流量转发/NAT 到“服务器 B”上的 IP 2.2.2.3。

我已经验证“服务器 A”能够在 IP 2.2.2.3 上与“服务器 B”“对话”。Ping 和 telnet 打开端口工作得很好,我打开了转发标志(net.ipv4.ip_forward=1)

我尝试了多种不同的方式,DNAT、SNAT、MASQUERADE 等,但我无法获得任何工作。

如果我尝试在同一服务器上的 IP 之间转发流量,这条线可以正常工作:

iptables -t nat -A PREROUTING -d 1.1.1.3 -j DNAT --to-destination 1.1.1.2
Run Code Online (Sandbox Code Playgroud)

但是如果我把“1.1.1.2”换成“2.2.2.3”,它就不起作用了。

我假设我需要第二个 iptable 规则来解决它。我尝试了以下 POSTROUTING 规则但没有任何运气(不是同时):

iptables -t nat -A POSTROUTING -d 2.2.2.3 -j MASQUERADE
iptables -t nat -A POSTROUTING -d 2.2.2.3 -j SNAT --to 1.1.1.3
iptables -t nat -A …
Run Code Online (Sandbox Code Playgroud)

networking linux firewall nat ip-forwarding

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

将传出的 SOCKS 服务器流量绑定到特定 IP

在办公室,我们通过 SOCKS 服务器访问网络,该服务器使用以下命令启动:
ssh localhost -f -N -D *:8888

这个服务器有2个IP(但只有一张网卡):
eth0 xx.yy.zz.1
eth0:1 xx.yy.zz.2

所以浏览器被配置为使用socks代理 xx.yy.zz.2:8888

当我检查网站看到的 IP 是什么时,它给了我xx.yy.zz.1(服务器的默认 IP)。
但我希望它是另一个 (xx.yy.zz.2)。

如何将传出连接绑定到第二个 IP?

编辑:
这可以用 iptables 解决吗?
可能有一种方法可以判断哪些数据包来自给定的 SSH 隧道,然后修改它们的目标 IP?

EDIT2:
我想到的另一个想法是,是否有某种包装命令强制另一个命令绑定到给定的 IP?

networking linux socks ip-forwarding

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

Docker 桥接和 nginx 允许的 ip

我们有一个包含多个 docker 容器的 docker 桥接器。主要的 docker 是一个 nginx 服务器,它充当网络主机并将所有数据转发到其他容器。

现在的要求是连接仅限于指定的 IP 地址列表。为此,我编辑了 nginx 服务器文件:

server {
        allow 127.0.0.0/8;
        deny all;
        ...
Run Code Online (Sandbox Code Playgroud)

这应该允许环回 127.0.0.1 连接。

然而,这失败了,查看 access.log 显示了原因:所有行都以:

    172.25.0.1 - - [10/Apr/2018:08:22:46 +0000] "GET
Run Code Online (Sandbox Code Playgroud)

172.25.0.1是docker bridge网络网关;因此,码头工人“忘记”了外部 ip,我无法再对其进行过滤。

如何过滤ips?或者将源ips转发给docker?

nginx ip-forwarding docker

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

从 VPN 网络 Ping 到 VPN 客户端工作;从 VPN 客户端到 VPN 网络的 ping 失败 - 为什么?

我们正在为在云中运行的一些服务器设置 OpenVPN 服务器。我们被一个连接问题难住了,VPN 服务器的 LAN 上的主机可以 ping te VPN 客户端,但反之则不然。

VPN 客户端可以在其 VPN 地址上 ping VPN 服务器,但不能在其 LAN 地址上 ping 通。

tcpdump 显示来自客户端的 ping 数据包到达主机并发出回复的证据,但由于某种原因,回复从未到达 VPN 服务器或客户端上的 tun0 接口。相反,根据 tcpdump,从 VPN 服务器的 LAN 到 VPN 客户端的 ping 请求的流量在所有预期的接口上都可以看到。

下面给出了我们迄今为止的配置和故障排除的详细说明。

该问题似乎与从服务器网络上的地址转发回客户端网络有关。真正奇怪(对我而言)是 LAN 发起的 ping 可以进行完整的往返,但是客户端发起的 ping 似乎在 VPN 服务器的 tun0 和 eth1 接口之间的某个地方被丢弃。

我们缺少什么?

情况:

3台主机:

  • VPN 客户端(tun0:10.8.0.22)
  • VPN 服务器 (tun0: 10.8.0.1, eth1: 10.11.11.2, eth0: xxxx)
  • 局域网服务器(eth0:10.11.11.7)

两台服务器都是虚拟机,运行 RHEL 5.7。我认为(但不完全确定)虚拟主机环境是 VMWare。

测试

  • VPN 客户端已通过 VPN 服务器的 eth0 接口建立到 VPN 服务器的隧道
  • VPN …

openvpn ping tcpdump ip-forwarding

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

将 IP 地址重定向到域名

我试图将我的域的 IP 地址重定向到域名,但遇到了麻烦。IP 地址不会重定向到以下重定向语句中列出的域名。

IP地址是 http://184.168.27.44/

我在 web.config 文件中设置了以下规则:

<rule name="IPHit" enabled="true" stopProcessing="false">
   <match url="(.*)" />
   <conditions>
      <add input="{HTTP_HOST}" pattern="^184\.168\.27\.44" />
   </conditions>
   <action type="Redirect" url="http://littlejawsbigsmiles.com/{R:1}" redirectType="Permanent" />
</rule>
Run Code Online (Sandbox Code Playgroud)

使用以下记录设置 DNS:

A (HOST) 
------------------------
@ --> 184.168.27.44

CNAME (Alias) 
------------------------
www --> @
Run Code Online (Sandbox Code Playgroud)

还有什么我想念的吗?我不确定为什么这不起作用。

我也尝试过这里提供的解决方案但仍然没有发生重定向

domain-name-system iis-7 redirect domain-name ip-forwarding

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

net.ipv6.conf.all.forwarding = 1 是未知密钥

我的系统很少有 ipv6 地址。我想将请求从一个系统转发到另一个系统。因此我保留了这个选项

net.ipv6.conf.all.forwarding = 1

在 sysctl.conf 中

但是请求没有像在 ipv4 中那样被转发,它也给我在启动时出错。net.ipv6.conf.all.forwarding 1 是未知密钥

ipv6 keys forwarding ip-forwarding sysctl

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