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
    • 最新
    • 标签
主页 / server / 问题

问题[iproute2](server)

Martin Hope
Ricardo Matos
Asked: 2022-03-01 05:07:54 +0800 CST

通过 VPN 接口重定向特定流量

  • 0

我,

我想通过特定接口重定向特定端口。

直到现在我完成的是

 cat /etc/iproute2/rt_tables | grep "200 force.route" > /dev/null
 if [ $? != 0 ]; then
   echo "200       force.route" >> /etc/iproute2/rt_tables
 fi

 ip rule del from all fwmark 200 table force.route
 ip rule add from all fwmark 200 table force.route
 ip route del 0.0.0.0/1 via 92.240.245.1 dev tun_02 table force.route
 ip route add 0.0.0.0/1 via 92.240.245.1 dev tun_02 table force.route
 ip route flush cache
 iptables -A OUTPUT -t mangle -o br0 -p icmp -j MARK --set-mark 200

但....

当我 ping 包通过特定设备时,请参阅

 tcpdump -i tun_02

然后,期待响应,但我没有对 echo-r​​equest 的响应。

我怎样才能做到这一点?

到现在为止是我完成的。

vpn redirect iptables interface iproute2
  • 1 个回答
  • 69 Views
Martin Hope
cdauth
Asked: 2022-02-28 14:26:02 +0800 CST

对于通过 Wireguard 进入的连接,通过同一设备发回响应

  • 0

我有一个在我的私有 LAN 中运行的服务器,它使用 Wireguardlanserver连接到公共服务器。使用 iptables规则通过 Wireguard 连接将 TCP 连接转发到某些端口。publicserverpublicserverlanserverDNAT

在 上lanserver,Wireguard 设置为 NetworkManager 连接。它通过 Wireguard 使用AllowedIPs = 0.0.0.0/0, ::/0. 这会导致设置以下 ip 规则lanserver:

[root@lanserver ~]# ip rule show
0:      from all lookup local
31100:  from all lookup main suppress_prefixlength 0
31101:  not from all fwmark 0xcb2e lookup 52014
32766:  from all lookup main
32767:  from all lookup default
[root@lanserver ~]# ip route show table 52014
default dev wg0 proto static scope link metric 50

此设置工作正常。使用 iptables 规则将传入的 TCP 连接publicserver转发到。由于 ip 规则与之匹配,因此lanserver将响应发回。publicserver31101

有一个例外:当我尝试publicserver从我的个人计算机打开 TCP 连接以使用 IPv6 时pc,它也位于我的私有 LAN 中,它不起作用。问题似乎是两者在同一个公共子网pc中lanserver都有一个 IPv6 地址。publicserver成功转发连接lanserver,但响应不是通过 Wireguard 连接路由回,而是直接pc由于 ip rule 31100。

如何确保通过 Wireguard 接口进入的连接的所有响应lanserver也通过 Wireguard 接口发回,无论它们的源 IP 是否在本地子网中?

我可以从以下几个方向思考解决方案:

  • 在 上禁用 IPv6 lanserver,导致它与 不在同一子网中pc。不是一个很好的解决方案。
  • 用于端口转发SNAT。publicserver不是一个可接受的解决方案,因为转发端口后面的一些服务需要知道真正的源 IP。
  • AllowedIPs在 Wireguard 对等体中明确提及本地 IPv6 子网。这不起作用,因为 IPv6 子网每 24 小时更改一次。
  • 添加一个自定义 IP 规则,该规则以某种方式匹配所有传入的连接wg0并为它们使用路由表52014。我不确定如何准确指定这样的规则。此外,问题在于每次重新启动 Wireguard 连接时,路由表的数量都会发生变化。创建此类规则的正确位置可能是PostUp脚本,但 NetworkManager 似乎不允许指定一个。
linux-networking wireguard iproute2
  • 1 个回答
  • 103 Views
Martin Hope
Kira
Asked: 2022-01-03 17:11:26 +0800 CST

强制新进程使用特定的网络接口(使用 netns/network 命名空间)

  • 0

我在 Ubuntu 20.04 机器上有许多可用的接口。除其他外 enx0c5b8f279a64,usb0后者被用作默认值。我想确保在终端中启动的特定进程将仅使用其中一个接口(enx0c5b8f279a64即使另一个接口是默认接口)。如果该进程启动并且所选 enx0c5b8f279a64 接口关闭,则它甚至不应该尝试使用任何其他接口作为后备(就好像从该进程的角度来看其他接口甚至不存在一样)。

我认为这ip netns是要走的路,但我无法实施任何可行的解决方案。我已经尝试过https://superuser.com/a/750412但是Destination Host Unreachable如果我尝试 ping我会得到8.8.8.8:(

输出的相关部分ip a s:

 9: enx0c5b8f279a64: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
     link/ether 12:12:12:12:12:12 brd ff:ff:ff:ff:ff:ff
     inet 192.168.7.100/24 brd 192.168.7.255 scope global dynamic noprefixroute enx0c5b8f279a64
        valid_lft 84611sec preferred_lft 84611sec
     inet6 2323::2323:2323:2323:2323/64 scope link noprefixroute 
        valid_lft forever preferred_lft forever
 10: usb0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 1000
     link/ether 34:34:34:34:34:34 brd ff:ff:ff:ff:ff:ff
     inet 192.168.42.**47**/24 brd 192.168.42.255 scope global dynamic noprefixroute usb0
        valid_lft 1858sec preferred_lft 1858sec
     inet6 4545:454:545:4545:454:5454:5454:5454/64 scope global temporary deprecated dynamic 
        valid_lft 2461sec preferred_lft 0sec
     inet6 5656:565:656:5656:5656:5656:5656:5656/64 scope global deprecated dynamic mngtmpaddr noprefixroute 
        valid_lft 2461sec preferred_lft 0sec
     inet6 6767::6767:6767:6767:6767/64 scope link noprefixroute 
        valid_lft forever preferred_lft forever

和路由表:

 route -n
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
 0.0.0.0         192.168.7.1     0.0.0.0         UG    100    0        0 enx0c5b8f279a64
 0.0.0.0         192.168.42.129  0.0.0.0         UG    101    0        0 usb0
 192.168.7.0     0.0.0.0         255.255.255.0   U     100    0        0 enx0c5b8f279a64
 192.168.42.0    0.0.0.0         255.255.255.0   U     101    0        0 usb0

到目前为止,我尝试过的所有解决方案都以类似的方式开始:

# create namespace
sudo ip netns add nspace0
# create link
sudo ip link add veth0 type veth peer name veth1
# move link
sudo ip link set veth1 netns nspace0

# DO SOME MAGIC 
# (none of the solutions that I have tried to adapt here worked for me so far).
...

# run process in namespace (here I use curl as an example) 
sudo ip netns exec nspace0 curl ifconfig.me/ip

但问题是MAGIC部分。我已经看到了许多使用网桥和其他 IP 转发解决方案的方法。不幸的是,到目前为止,这些都没有对我有用,而且我并不精通网络,无法诊断和修复。

ip iproute2 namespaces network-namespace net
  • 1 个回答
  • 426 Views
Martin Hope
roelvanmeer
Asked: 2021-11-17 04:07:23 +0800 CST

Linux:是什么导致静态 ARP 条目在链路断开时刷新

  • 2

这是一个关于Debian Buster(内核 4.19.0-18)和Debian Bullseye(内核 5.10.0-9)之间网络行为差异的问题。在 Buster 上,如果接口上的链接断开,代理 arp 条目将继续存在。在 Bullseye 上,他们没有。

情况:在特定接口上创建静态代理 ARP 条目:

ip neigh add proxy 1.2.3.5 dev eth0

我可以验证该条目是否存在:

ip neigh show proxy

现在,如果该接口上的链接断开并再次恢复,则在 Buster 上,代理 arp 条目仍然存在,在 Bullseye 上它们消失了。

我想知道这种差异背后的原因。它是内核功能吗?udev 是这样做的吗?是否有一个 sysctl 设置来管理这个?

有人能指出我正确的方向吗?如果您知道如何在 Bullseye / 内核 5.10 上创建静态 ARP 条目,那就更好了。

请注意,我使用的是 sysvinit,而不是 systemd。谢谢!

arp linux-networking iproute2
  • 1 个回答
  • 561 Views
Martin Hope
Leon
Asked: 2021-11-15 23:01:43 +0800 CST

如何添加只匹配“dport”的路由规则?

  • 0

在我的 OpenWrt 框中,我只想将特定协议(tcp:1888)路由到一台 PC(192.168.28.2)的 tun 接口,所以我执行以下操作:

ip rule add from 192.168.28.2 dport 1888 lookup 123

ip route add default via 10.8.0.2 dev tun0 table 123

但它不起作用!

当我检查规则列表时ip rule,我得到:

0:从所有本地查找

32765:从 192.168.28.2 查找 123

32766:来自所有查找主

32767:从所有查找默认值

我客人说 dport SELECTOR 没有生效。

我应该怎么做?

谢谢!!!

解决方案:在 Nikita Kipriyanov 的帮助下,我得到了它,但是 mangle 表的 FORWARD 链不起作用,我使用了 PREROUTING instaed。

请任何人解释为什么我应该使用 PREROUTING 而不是 FORWARD 的 mangle?

iptables ip-routing openwrt iproute2 rules
  • 1 个回答
  • 122 Views
Martin Hope
Karthik Balasubramanian
Asked: 2021-10-26 09:50:51 +0800 CST

在网关节点内,如何始终如一地通过特定接口将流量路由到外部世界?

  • 0

我有带有两个网卡(eth0 和 eth2)的 linux ec2 实例。两个网卡都附有公共 IP,并且能够上网。这个 linux 实例对我来说充当网关节点,转发来自无法访问 Internet 的私有子网中的 ec2 的流量。

能够将来自私有子网中的 ec2 实例的流量转发到公共子网中的此网关实例。网关实例中的所有流量都在 eth0 上接收。现在我希望能够通过 eth1 而不是 eth0 上网。我想这样做是因为我希望外界将 eth1 的 IP 视为源 IP。

执行这些步骤可以帮助我实现这一目标

ip route add 10.0.0.0/23 <subnet of gateway cidr> dev eth2 table 2
ip rule add from <private ec2 instance's ip> table 2
ip route add default via 10.0.0.1 dev eth2 table 2
ip route flush cache

iptables -A FORWARD --in-interface eth0 -j ACCEPT #accepts traffic on eth0
iptables --table nat -A POSTROUTING --out-interface eth2 -j MASQUERADE #forwards the traffic outside via eth2

使用此设置,当我在私有子网中的 ec2 实例之外(通过网关节点)卷曲时,我看到了我期望看到的内容(即外界看到请求来自 eth1 的 ip),但是 curl 请求需要一个很长一段时间(有时甚至超时)。我会说 10 个请求中约有 5 个成功。

我在这里想念什么?

谢谢凯

amazon-ec2 iptables gateway iproute2
  • 1 个回答
  • 35 Views
Martin Hope
Karthik Balasubramanian
Asked: 2021-10-14 06:35:57 +0800 CST

如何修改 EC2 实例中的路由表以通过 eth1 发送流量?

  • 0

我有一个 ec2 AmazonLinux2 实例。它在 eth0 上有一个主网卡。我继续并附加了另一个eni(带有关联的公共IP)eth1。我想确保我也可以通过 eth1 发送流量,但不能。

curl --interface eth0 ifconfig.me --> Works, returns the public ip of the instance
curl --interface eth1 ifconfig.me --> Does not work, the call just hangs

这是我的界面

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 02:82:39:f5:b2:61 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.156/23 brd 192.168.1.255 scope global dynamic eth0
       valid_lft 2293sec preferred_lft 2293sec
    inet6 fe80::82:39ff:fef5:b261/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 02:85:86:84:a8:1b brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.8/23 brd 192.168.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::85:86ff:fe84:a81b/64 scope link
       valid_lft forever preferred_lft forever

路由表

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
169.254.169.254 0.0.0.0         255.255.255.255 UH    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.254.0   U     0      0        0 eth0

这是我添加静态路由的步骤

  1. echo 2 mytable >> /etc/iproute2/rt_tables
  2. sudo ip route add default via 192.168.0.1 dev eth1 table mytable
  3. sudo ip rule add from 192.168.0.8 lookup mytable prio 1000
  4. ip route 刷新表缓存

我在这里看到了各种帖子,其中强调了做同样事情的不同方法,但我尝试过它们都是徒劳的。有人可以帮我解决这里发生的事情吗

这些步骤的灵感来自帖子http://www.rjsystems.nl/en/2100-adv-routing.php。

谢谢凯

amazon-ec2 iptables linux-networking iproute2 amazon-elastic-ip
  • 2 个回答
  • 336 Views
Martin Hope
kita
Asked: 2021-06-23 07:14:15 +0800 CST

ipsec xfrm esp 路由

  • 0

我需要一点帮助/解释为什么以下网络设置不起作用:

PC1 (192.168.66.1) <-- PLAIN --> (192.168.66.2)PC-GW(192.168.88.2) <-- ESP --> (192.168.88.1) PC2

我可以将数据包从 PC1 192.168.66.1 发送到 PC2 192.168.88.1,PC-GW 封装 esp,PC2 接收 esp 数据包,它工作正常。

但是,如果我将 esp 数据包从 PC2 192.168.88.1 发送到 PC1 192.168.66.1,PC-GW 转发了 esp 数据包而没有解封装/解密,PC1 得到一个 esp 数据包。

如果两个系统都使用 ESP,它可以正常工作:

PC1 (192.168.66.1) <-- ESP--> (192.168.88.1) PC2

我尝试了几种不同的配置,这是我使用的命令:

ip xfrm state add src 192.168.66.1/32 dst 192.168.88.1/32 proto esp spi 0x01000000 reqid 0x01000000 mode transport aead 'rfc4106(gcm(aes))' 0x000000000000000000000000000000000000000000000000000000000000000000000000 128 sel src 192.168.66.1/32 dst 192.168.88.1/32
ip xfrm state add src 192.168.88.1/32 dst 192.168.66.1/32 proto esp spi 0x01000000 reqid 0x02000000 mode transport aead 'rfc4106(gcm(aes))' 0x000000000000000000000000000000000000000000000000000000000000000000000000 128 sel src 192.168.88.1/32 dst 192.168.66.1/32
ip xfrm policy add src 192.168.66.1/32 dst 192.168.88.1/32 dir out tmpl src 192.168.66.1/32 dst 192.168.88.1/32 proto esp reqid 0x01000000 mode transport
ip xfrm policy add src 192.168.88.1/32 dst 192.168.66.1/32 dir in tmpl src 192.168.88.1/32 dst 192.168.66.1/32 proto esp reqid 0x02000000 mode transport

在 tcpdump 的帮助下,我捕获了所有接口。

我不使用openswap,这个测试设置不是真正的使用场景。这只是为了尝试,我想了解它是如何工作的。

linux ipsec linux-networking iproute2
  • 1 个回答
  • 463 Views
Martin Hope
Mikhail Kupchik
Asked: 2021-05-23 02:44:39 +0800 CST

无需 ifenslave 命令即可更改 Linux 网络绑定接口的活动从属设备

  • 1

Linux 支持绑定多个以太网网络接口以获得额外的可靠性或负载平衡。

绑定驱动程序过去是通过ifenslave命令配置的,该命令已被弃用(由iproute2ip工具包中的命令取代),因此已从内核源代码中删除。ifenslave

已弃用命令的一个特殊功能是我找不到现代等效命令,即更改绑定接口的活动从属设备(假设绑定接口在该active-backup模式下运行)。

例如,以下命令将eth0网卡设置为bond0接口的活动从属:

ifenslave -c bond0 eth0
ifenslave --change-active bond0 eth0

有没有办法使用iproute2ip工具包中的命令或通过 sysfs 更改 Linux 绑定接口的活动从属?

linux bonding linux-networking iproute2
  • 1 个回答
  • 2161 Views
Martin Hope
krisek
Asked: 2021-03-11 07:13:04 +0800 CST

ss --events 在 CentOS 7 上没有输出

  • 1

我尝试使用该ss实用程序持续监控 CentOS 7 机器上的 TCP 连接。如果我开始ss --events,我不会收到任何事件。有什么技巧可以实现吗?还是 CentOS 7 中的内核 (3.10) 太旧而无法进行练习?

centos iproute2
  • 1 个回答
  • 86 Views

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve