相关疑难解决方法(0)

iptables --set-mark - 通过不同的接口路由不同的端口

小故事,
3个接口,eth0(局域网),eth1(ADSL),eth2(4G)。
eth0 -> eth1:有效
(端口 80、443、4070) eth0 -> eth2:不会发生


这是这个想法的图形表示:

端口 80 和 443 通过 eth2
ant 其余通过 eth1
在此处输入图片说明

网络方案:

eth0: -ip 10.0.0.1 -net 10.0.0.0/8 -gw 10.0.0.1 (the servers own intf) 
eth1: -ip 192.168.1.74 -net 192.168.1.0/24 -gw 192.168.1.254 
eth2: -ip 192.168.1.91 -net 192.168.0.0/24 -gw 192.168.0.1 
Run Code Online (Sandbox Code Playgroud)






我认为,这个新脚本将 22 和 4070 重新路由到正确的表。
但是,到达该表后,它不会重新路由到 eth2。




此脚本有效,除了 22 和 4070!

(端口 80 没有注释并且可以工作,但是通过 eth1 是错误的。)

modprobe iptable_nat
modprobe ip_conntrack

echo "1" > /proc/sys/net/ipv4/ip_forward

iptables -P INPUT ACCEPT
iptables -F INPUT
iptables -P OUTPUT …
Run Code Online (Sandbox Code Playgroud)

ubuntu routing iptables route

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

只允许某些接口上的某些出站流量

我有一个比较奇怪的问题。我有一个带有两个网络接口的服务器eth0eth1. 每个都连接到不同的网络。每个网络都有一个互联网网关。服务器有各种出站连接:http(服务器上的一些脚本抓取网站)、nfs 客户端、samba 客户端、dns 客户端和电子邮件提取器等等。

由于我不会讨论的原因,我需要将这些出站客户端分开,以便出站 http、nfs、samba 和 dns 流量仅在eth0其他所有内容通过eth1.

我已经阅读了一些谷歌搜索,它看起来iptables是我需要的,但我真的没有任何线索。我只习惯于通过ufw.

有人可以从一些示例规则开始,告诉我如何让系统在启动时采用这些规则吗?理想情况下,不要将我锁定在 SSH 连接之外(我可以进行物理访问,但我宁愿不这样做)。

编辑如果可以将来自一个帐户的所有出站流量限制到一个接口,我可以将客户端拆分为两个用户。在纸面上似乎可能更容易。

networking iptables

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

通过 VPN 仅路由 ssh 流量

是否可以通过 VPN 连接路由计算机的 SSH 服务,但允许所有其他数据通过 WAN 地址退出?需要使用什么样的 iptables 魔法来实现这一点?

SSH 数据 → 通过 VPN
所有其他数据 → 通过默认路由

ssh routing remote-management vpn

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

将特定用户的流量路由到特定接口

我有一个带有这些接口的 Linux 机器:

eth0      Link encap:Ethernet  HWaddr 14:da:e9:ef:75:7d  
      inet addr:176.9.85.182  Bcast:176.9.85.191  Mask:255.255.255.224

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
      inet addr:10.170.1.6  P-t-P:10.170.1.5  Mask:255.255.255.255
Run Code Online (Sandbox Code Playgroud)

eth0是我的互联网连接,tun0显然是一个 VPN。现在我想将特定用户生成的所有流量路由到 VPN。因为这是我第一次真正的路由问题,我解决我用Google搜索了很多,阅读这些:Routning基于用户路由端口基地基本VPN路由 和部分LARC。到目前为止,我一起对此感到困惑:

# Mark all traffic from user
iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1002 -j MARK --set-mark 10
# Translate source address to VPN address
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
# And just to be sure allow forwarding …
Run Code Online (Sandbox Code Playgroud)

linux routing iptables vpn

6
推荐指数
0
解决办法
3307
查看次数

基于端口的特定接口上的路由

我在 Linux 机器上有一个 php/bash 应用程序,它有 1 个物理接口连接到例如出站网络服务器 123.123.123.123:80。我通过几个 openvpn 提供商来做到这一点。我有 tun 和 tap 提供程序,但我最喜欢的提供程序使用 tun。

其实我完全能够连续:

  1. 打开VPN
  2. sudo route add 123.123.123.123 tun0
  3. 将流量发送到 123.123.123.123 :80
  4. 关闭VPN
  5. sudo route del 123.123.123.123

我在 .ovpn 配置文件中使用了“route-nopull”选项,以保持 Linux 机器可访问并允许同时进行 openvpn 连接。

现在我需要打开几个独立的请求,总是到出站网络服务器 123.123.123.123 :80。但是我的实际流程是串行的,在尝试第二个连接之前,我需要等待第一个连接关闭并清除自身。

我很确定我可以通过“假端口”来实现它。例如:

  • 接口 tun0、tun1、tun2
  • 假端口 9000、9001、9002
  • 多个路由表 rt0、rt1、rt2

所以从概念上讲:

  • 123.123.123.123:9000 -> rt0 标记(tun0 是默认网关)-> 重写为 123.123.123.123:80 -> rt0
  • 123.123.123.123:9001 -> rt1 标记(tun1 是默认网关) -> 重写为 123.123.123.123:80 -> rt1
  • 123.123.123.123:9002 -> rt2 标记(tun2 是默认网关) -> 重写为 123.123.123.123:80 -> rt2

我只能代表概念,因为我几乎没有iptables的技能。如果你有不同的方法来实现结果,他们是受欢迎的。感谢您的阅读和帮助。

linux iptables openvpn route

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

标签 统计

iptables ×4

routing ×3

linux ×2

route ×2

vpn ×2

networking ×1

openvpn ×1

remote-management ×1

ssh ×1

ubuntu ×1