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 / 问题

问题[iptables](server)

Martin Hope
Mohammadmahdi
Asked: 2025-04-19 15:32:22 +0800 CST

ipsec/xfrm 策略匹配的 nftables 语法

  • 5

我有一个 IPtables 匹配为-m policy --dir out --pol ipsec --mode tunnel --tunnel-src 1.1.1.2 --tunnel-dst 1.1.1.1。我知道此匹配在兼容模式下与 nftables 兼容xt "policy",但我需要使用 nftables 语法,以便仅使用nft并从中备份。


而且nftables v0.9.3 (Topsy)它不支持兼容模式xt "policy"。我也试过了,ipsec out ip saddr 1.1.1.2 ip daddr 1.1.1.1但似乎既不能在这个版本上运行,也不能nftables v1.0.9 (Old Doc Yak #3)像预期的那样运行。

iptables
  • 1 个回答
  • 101 Views
Martin Hope
Mohammadmahdi
Asked: 2025-04-16 22:43:21 +0800 CST

XFRM 目录输出策略标记与 IPtables 中设置的数据包标记不匹配

  • 6

dir out mark我在 xfrm 策略方面遇到了问题。我已经在 strongswan 配置中设置了mark_in,mark_out并建立了 ipsec 连接。我还添加了一些简单的 iptables 规则来标记数据包,并仅在匹配成功时进行检查(这仅用于测试目的,因此除了不匹配的 ipsec 相关数据包外,其他所有数据包都会被允许通过)。


eth3 连接到隧道此侧后面的客户端

eth8 用于隧道

StrongSwan配置:

connections {
  tun_p1 {
    local_addrs=1.1.1.2
    remote_addrs=1.1.1.1
    send_cert=never
    unique=replace
    version=2
    mobike=no
    keyingtries=5
    dpd_delay=30
    dpd_timeout=90
    rekey_time=3600s
    over_time=120s
    rand_time=60
    children {
      tun_1 {
        local_ts=3.3.3.0/24
        remote_ts=2.2.2.0/24
        mode=tunnel
        ipcomp=no
        dpd_action=trap
        start_action=start
        close_action=none
        rekey_time=28800s

        # Marks are here
        mark_out=0x1000/0xff000
        mark_in=0x100000/0x100000
      }
    }
    local {
      auth=psk
      id=1.1.1.2
    }
    remote {
      auth=psk
      id=1.1.1.1
    }
  }
}

XFRM 政策:

root@ubuntu-24:~# ip xfrm policy
src 3.3.3.0/24 dst 2.2.2.0/24
        dir out priority 375423
        mark 0x1000/0xff000
        tmpl src 1.1.1.2 dst 1.1.1.1
                proto esp spi 0xc862dc7c reqid 1 mode tunnel
src 2.2.2.0/24 dst 3.3.3.0/24
        dir fwd priority 375423
        mark 0x100000/0x100000
        tmpl src 1.1.1.1 dst 1.1.1.2
                proto esp reqid 1 mode tunnel
src 2.2.2.0/24 dst 3.3.3.0/24
        dir in priority 375423
        mark 0x100000/0x100000
        tmpl src 1.1.1.1 dst 1.1.1.2
                proto esp reqid 1 mode tunnel

IPtables配置:

*raw
:PREROUTING ACCEPT
:OUTPUT ACCEPT

 -A PREROUTING -i eth3 -j TRACE

COMMIT

*mangle
:PREROUTING ACCEPT
:POSTROUTING ACCEPT
:INPUT ACCEPT
:OUTPUT ACCEPT
:FORWARD ACCEPT
:IPsec -

 -A PREROUTING  -i eth8 -p esp -d 1.1.1.2 -s 1.1.1.1 -j MARK --set-mark 0x100000/0x100000

 -A FORWARD  -i eth3 -o eth8 -j MARK --set-mark 0x1000/0xff000

 -A POSTROUTING -j IPsec

 -A IPsec -m mark --mark 0x1000/0xff000 -m policy --dir out --pol ipsec --mode tunnel --tunnel-src 1.1.1.2 --tunnel-dst 1.1.1.1 -j RETURN
 -A IPsec -m mark --mark 0x1000/0xff000 -j DROP

COMMIT

*nat
:PREROUTING ACCEPT
:POSTROUTING ACCEPT
:OUTPUT ACCEPT

COMMIT

*filter
:INPUT ACCEPT
:OUTPUT ACCEPT
:FORWARD ACCEPT
:PolicyFilterChain -

 -A FORWARD -j PolicyFilterChain

 -A PolicyFilterChain -m state --state NEW,ESTABLISHED,RELATED -m mark --mark 0x100000/0x100000  -m policy --dir in --pol ipsec --mode tunnel --tunnel-src 1.1.1.1 --tunnel-dst 1.1.1.2  -j ACCEPT

 -A INPUT -i eth8 -p udp --sport 500 --dport 500 -d 1.1.1.1 -s 1.1.1.2 -j ACCEPT
 -A INPUT -i eth8 -p esp -d 1.1.1.2 -s 1.1.1.1 -j ACCEPT

COMMIT

当我从隧道另一端发送数据包时,一切正常,我收到了响应。问题出在dir out隧道这一侧的数据包上。我知道它们会被标记,因为它们在策略检查后会被规则丢弃,但它们与 xfrm 策略不匹配,即使我没有丢弃它们,它们也没有被 xfrm 加密。

如果我注释-A IPsec -m mark --mark 0x1000/0xff000 -j DROP规则,则数据包将以未加密的形式发送到另一端,尽管数据包上设置了标记。


评论删除后追踪:

TRACE: raw:PREROUTING:policy:2 IN=eth3 OUT= MAC=00:50:56:9f:3d:99:00:50:56:9f:c8:bc:08:00 SRC=3.3.3.3 DST=2.2.2.2 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=42626 DF PROTO=ICMP TYPE=8 CODE=0 ID=2584 SEQ=1
TRACE: mangle:PREROUTING:policy:2 IN=eth3 OUT= MAC=00:50:56:9f:3d:99:00:50:56:9f:c8:bc:08:00 SRC=3.3.3.3 DST=2.2.2.2 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=42626 DF PROTO=ICMP TYPE=8 CODE=0 ID=2584 SEQ=1
TRACE: nat:PREROUTING:policy:1 IN=eth3 OUT= MAC=00:50:56:9f:3d:99:00:50:56:9f:c8:bc:08:00 SRC=3.3.3.3 DST=2.2.2.2 LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=42626 DF PROTO=ICMP TYPE=8 CODE=0 ID=2584 SEQ=1
TRACE: mangle:FORWARD:rule:1 IN=eth3 OUT=eth8 MAC=00:50:56:9f:3d:99:00:50:56:9f:c8:bc:08:00 SRC=3.3.3.3 DST=2.2.2.2 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=42626 DF PROTO=ICMP TYPE=8 CODE=0 ID=2584 SEQ=1
TRACE: mangle:FORWARD:policy:2 IN=eth3 OUT=eth8 MAC=00:50:56:9f:3d:99:00:50:56:9f:c8:bc:08:00 SRC=3.3.3.3 DST=2.2.2.2 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=42626 DF PROTO=ICMP TYPE=8 CODE=0 ID=2584 SEQ=1 MARK=0x1000
TRACE: filter:FORWARD:rule:1 IN=eth3 OUT=eth8 MAC=00:50:56:9f:3d:99:00:50:56:9f:c8:bc:08:00 SRC=3.3.3.3 DST=2.2.2.2 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=42626 DF PROTO=ICMP TYPE=8 CODE=0 ID=2584 SEQ=1 MARK=0x1000
TRACE: filter:PolicyFilterChain:return:3 IN=eth3 OUT=eth8 MAC=00:50:56:9f:3d:99:00:50:56:9f:c8:bc:08:00 SRC=3.3.3.3 DST=2.2.2.2 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=42626 DF PROTO=ICMP TYPE=8 CODE=0 ID=2584 SEQ=1 MARK=0x1000
TRACE: filter:FORWARD:policy:2 IN=eth3 OUT=eth8 MAC=00:50:56:9f:3d:99:00:50:56:9f:c8:bc:08:00 SRC=3.3.3.3 DST=2.2.2.2 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=42626 DF PROTO=ICMP TYPE=8 CODE=0 ID=2584 SEQ=1 MARK=0x1000
TRACE: mangle:POSTROUTING:rule:1 IN=eth3 OUT=eth8 MAC=00:50:56:9f:3d:99:00:50:56:9f:c8:bc:08:00 SRC=3.3.3.3 DST=2.2.2.2 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=42626 DF PROTO=ICMP TYPE=8 CODE=0 ID=2584 SEQ=1 MARK=0x1000
TRACE: mangle:IPsec:return:2 IN=eth3 OUT=eth8 MAC=00:50:56:9f:3d:99:00:50:56:9f:c8:bc:08:00 SRC=3.3.3.3 DST=2.2.2.2 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=42626 DF PROTO=ICMP TYPE=8 CODE=0 ID=2584 SEQ=1 MARK=0x1000
TRACE: mangle:POSTROUTING:policy:2 IN=eth3 OUT=eth8 MAC=00:50:56:9f:3d:99:00:50:56:9f:c8:bc:08:00 SRC=3.3.3.3 DST=2.2.2.2 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=42626 DF PROTO=ICMP TYPE=8 CODE=0 ID=2584 SEQ=1 MARK=0x1000
TRACE: nat:POSTROUTING:policy:1 IN=eth3 OUT=eth8 MAC=00:50:56:9f:3d:99:00:50:56:9f:c8:bc:08:00 SRC=3.3.3.3 DST=2.2.2.2 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=42626 DF PROTO=ICMP TYPE=8 CODE=0 ID=2584 SEQ=1 MARK=0x1000

TCP转储:

root@ubuntu-24:~# tcpdump -i eth8 proto 50 or host 3.3.3.3 -nn
17:58:41.992237 IP 3.3.3.3 > 2.2.2.2: ICMP echo request, id 2603, seq 1, length 64
^C
1 packet captured
1 packet received by filter
0 packets dropped by kernel

反转就可以了:

root@ubuntu-24:~# tcpdump -i eth8 proto 50 or host 3.3.3.3 -nn
18:00:04.880886 IP 1.1.1.1 > 1.1.1.2: ESP(spi=0xc98cba8d,seq=0x2), length 136
18:00:04.881265 IP 2.2.2.2 > 3.3.3.3: ICMP echo request, id 59100, seq 1, length 64
18:00:04.882554 IP 3.3.3.3 > 2.2.2.2: ICMP echo reply, id 59100, seq 1, length 64
^C
3 packets captured
3 packets received by filter
0 packets dropped by kernel

我知道问题出在mark_out,因为如果我对其进行评论,一切都会按预期进行,但我需要标记。

iptables
  • 1 个回答
  • 30 Views
Martin Hope
Bernd Storath
Asked: 2025-03-27 15:53:34 +0800 CST

Podman、WireGuard 和 nftables

  • 6

我在 Podman 容器中运行 WireGuard。我有一个像这样的 Hub and Spoke 配置

Client A <--> Hub <--> Client B
               |
               |
            Internet

这是目前 Hub 上的 WireGuard 配置

[Interface]
PrivateKey = ...
Address = 10.8.0.1/24, fdcc:ad94:bacf:61a4::cafe:1/112
ListenPort = 51820
MTU = 1420
PostUp = iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE; iptables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -s fdcc:ad94:bacf:61a4::cafe:0/112 -o eth0 -j MASQUERADE; ip6tables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -A FORWARD -o wg0 -j ACCEPT;
PostDown = iptables -t nat -D POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE; iptables -D INPUT -p udp -m udp --dport 51820 -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -s fdcc:ad94:bacf:61a4::cafe:0/112 -o eth0 -j MASQUERADE; ip6tables -D INPUT -p udp -m udp --dport 51820 -j ACCEPT; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -D FORWARD -o wg0 -j ACCEPT;

# Client A
[Peer]
PublicKey = hcU3LDJmlsInRSDFErt+Kp2CZBRzSggvmfOkSKcGx1A=
PresharedKey = ...
AllowedIPs = 10.8.0.2/32, fdcc:ad94:bacf:61a4::cafe:2/128

但是因为 Hub 在 OCI 上运行的是 AlmaLinux 9.5,所以我不得不将 iptables 设置为使用 iptables-legacy。

现在我正尝试迁移到 nftables

这是新的配置

[Interface]
...
PostUp = nft add table inet wg_table; nft add chain inet wg_table postrouting { type nat hook postrouting priority 100 \; }; nft add rule inet wg_table postrouting ip saddr 10.8.0.0/24 oifname eth0 masquerade; nft add rule inet wg_table postrouting ip6 saddr fdcc:ad94:bacf:61a4::cafe:0/112 oifname eth0 masquerade; nft add chain inet wg_table input { type filter hook input priority 0 \; policy accept \; }; nft add rule inet wg_table input udp dport 51820 accept; nft add chain inet wg_table forward { type filter hook forward priority 0 \; policy accept \; }; nft add rule inet wg_table forward iifname "wg0" accept; nft add rule inet wg_table forward oifname "wg0" accept;
PostDown = nft delete table inet wg_table
...

我尝试暂时保持接近原始 iptables 规则。

但是用我的手机却不行,我无法用新规则连接到互联网。即使使用 iptables-nft 也不起作用

iptables
  • 1 个回答
  • 98 Views
Martin Hope
Magnus
Asked: 2025-03-13 05:41:49 +0800 CST

是否有可能在没有网桥的情况下与 Linux 上的 Docker 容器进行通信?

  • 5

这周我一直在阅读有关网络方面的资料,但我的理解仍然存在一个看似重大的漏洞,该漏洞与我的主机可以访问哪些 IP 地址以及如何访问有关。

具体来说,ip -br addr表现为:

lo               UNKNOWN        127.0.0.1/8 ::1/128
tunl0@NONE       DOWN
sit0@NONE        DOWN
ip6tnl0@NONE     DOWN
eth0@if15        UP             198.19.249.109/24 metric 1024 fd07:b51a:cc66:0:439:fcff:fe3f:27d6/64 fe80::439:fcff:fe3f:27d6/64
docker0          DOWN           172.17.0.1/16 fe80::acc7:7cff:fe73:5421/64
br-140e1fbca70a  UP             172.18.0.1/16 fe80::34c3:10ff:fe55:2464/64
vethbf1bfcc@if5  UP             fe80::38fd:c6ff:fe37:f54/64
veth7e8fb76@if5  UP             fe80::689e:8bff:fe81:d8c3/64

并ip route显示:

default via 198.19.249.1 dev eth0 proto dhcp src 198.19.249.109 metric 1024
0.250.250.200 via 198.19.249.1 dev eth0 proto dhcp src 198.19.249.109 metric 1024
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.18.0.0/16 dev br-140e1fbca70a proto kernel scope link src 172.18.0.1
198.19.249.0/24 dev eth0 proto kernel scope link src 198.19.249.109 metric 1024
198.19.249.1 dev eth0 proto dhcp scope link src 198.19.249.109 metric 1024

并ip neigh显示:

198.19.249.1 dev eth0 lladdr da:9b:d0:54:e0:02 STALE
172.18.0.3 dev br-140e1fbca70a lladdr fe:50:d0:de:5a:ce STALE
fe80::d84c:3aff:fef1:e382 dev eth0 lladdr da:9b:d0:54:e0:02 router STALE

此外,docker network inspect ..._..._default表示网络有网关172.18.0.1,并有两个容器与其连接,包括172.18.0.3。

iptables仅包含标准Docker 规则。

问题:

我运行ip route del 172.18.0.0/16并从路由表中删除了该条目。

我现在怎么无法访问docker容器了?

该172.18.0.3容器在我的计算机上本地运行,因此我希望能够访问它,只要我以iptable某种方式调整规则即可。难道这样不对吗?

iptables
  • 1 个回答
  • 81 Views
Martin Hope
Lorie
Asked: 2025-03-13 00:27:45 +0800 CST

我正在使用 Calico Host Endpoints 和 Global Network 策略来过滤每个接口的流量,但看到数据包被丢弃,这是我意想不到的

  • 5

我有一个类似这样的全局网络策略(记录任何不发送到端口 30000 的数据包,并且只允许流量发送到接口 ens4 上的端口 30000):

apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
  name: internal-rules
spec:
  selector: interface == 'ens4'
  applyOnForward: true
  types:
  - Ingress
  - Egress
  ingress:
  - action: Log
    protocol: TCP
    destination:
      notPorts:
      - 30000:32767
  - action: Allow
    protocol: TCP
    destination:
      ports:
      - 30000:32767
  egress:
  - action: Allow

然后我将它应用到具有这样的主机端点的接口。

apiVersion: projectcalico.org/v3
kind: HostEndpoint
metadata:
  name: node1-internal-if
  labels:
    interface: ens4
spec:
  interfaceName: ens4
  node: testmdm2503nic-node1

我为设置中的 3 个不同接口设置了不同的规则。通常情况下,它可以过滤我的流量,但我发现一些我意想不到的数据包被丢弃了。例如,以下数据包被丢弃了。请注意,IN 接口是空白的,我原以为它不应该通过我的 hostendpoint 规则进行过滤。端口 30000 是我在 ens4 上列为开放的端口之一,但我不确定这些流量是从哪个接口传入的。

2025 年 3 月 11 日星期二 18:02:39:INFO | kickRegressionSuite:3 月 11 日 16:43:04 testmdm2503nic-k8sc-node1-2 内核:calico-packet:IN= OUT=cali6f00f63eeec SRC=1.2.3.4 DST=1.2.8.4 LEN=60 TOS=0x00 PREC=0x00 TTL=62 ID=9941 DF PROTO=TCP SPT=58082 DPT=30000 WINDOW=64240 RES=0x00 SYN URGP=0 MARK=0x69a04000

当数据包按预期被丢弃时,日志通常会在 IN 字段中列出接口名称:

2 月 20 日 10:30:50 loriek8s-k8sc-node2-3 内核:calico-packet:IN=ens3 OUT= MAC=fa:: SRC=1.1.7.9 DST=1.1.7.2 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=53798 DF PROTO=TCP SPT=33728 DPT=10250 WINDOW=29200 RES=0x00 SYN URGP=0

有什么想法我可能做错了吗,或者也许丢弃的数据包的记录并不像我期望的那样。

iptables
  • 1 个回答
  • 47 Views
Martin Hope
barmanthewise
Asked: 2025-01-30 12:10:13 +0800 CST

Wireguard 容器不允许对 Sidecar 容器进行健康检查

  • 6

我需要通过 AWS 网络负载均衡器在 Kubernetes 中公开 wireguard 服务。

除非健康检查通过,否则负载均衡器不会将流量路由到我的 wireguard pod。由于 AWS 负载均衡器不支持 UDP 健康检查,而 wireguard 在 UDP 上运行,因此我将一个简单的 TCP 服务连接到 wireguard pod,但无法访问,因此健康检查失败。

这是相关的 yaml 部署规范片段。

    spec:
      containers:
        - name: "wireguard"
          image: "linuxserver/wireguard:latest"
          ports:
            - containerPort: 51820
              protocol: UDP
          securityContext:
            privileged: true
            capabilities:
              add:
                - NET_ADMIN
        - name: healthcheck
          image: istio/tcp-echo-server:latest
          imagePullPolicy: IfNotPresent
          args: [ "9000", "hello" ]
          ports:
          - containerPort: 9000

如果我省略 wireguard 容器,或者注释掉 NET_ADMIN 部分,从而确保没有网络配置被更改,我就可以成功访问 heathcheck pod,例如运行:

kubectl run -i --rm --restart=Never dummy --image=busybox -- sh -c "echo world | nc wireguard-service.wg-test 9000"
hello world

在 wireguard 的容器日志中,我可以看到这些命令正在执行。我怀疑节点的路由配置中发生了一些变化,导致端口 9000 变得无法访问。

[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.11.0.1/16 dev wg0
[#] ip link set mtu 1450 up dev wg0
[#] wg set wg0 fwmark 51820
[#] ip -4 route add 0.0.0.0/0 dev wg0 table 51820
[#] ip -4 rule add not fwmark 51820 table 51820
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] iptables-restore -n
[#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
[#] sysctl -w -q net.ipv4.ip_forward=1

我尝试添加,iptables -A INPUT -p tcp --dport 9000 -j ACCEPT但iptables -A FORWARD -p tcp --dport 9000 -j ACCEPT无济于事。我这里遗漏了什么?

iptables
  • 1 个回答
  • 49 Views
Martin Hope
jurijus01
Asked: 2025-01-06 06:16:36 +0800 CST

尽管允许 ipv6,ipTables 仍阻止 ipv4 端口 25 流量。可以修复吗?

  • 6

对端口 25 上的有限 IPv4 连接进行故障排除。

有 ipTables 规则:

  Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  185.121.228.0/24     anywhere            
ACCEPT     all  --  127.0.0.0/24         anywhere            
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smtp

一旦默认 INPUT 策略为 ACCEPT,

root@mail:/home/ubuntu# echo “HELO” | nc -4 smtp.google.com 25
220 mx.google.com ESMTP ffacd0b85a97d-38a1c8bb5f7si23003263f8f.375 - gsmtp
502-5.5.1 Unrecognized command. For more information, go to
502 5.5.1  https://support.google.com/a/answer/3221692 ffacd0b85a97d-38a1c8bb5f7si23003263f8f.375 - gsmtp

一旦默认 INPUT 策略为 DROP,相同的命令将无限期挂起。

现在最有趣的部分是 INPUT 策略的改变对

root@mail:/home/ubuntu# echo “HELO” | nc -6 smtp.google.com 25

无论如何,它都会得到 Google 的回应。

需要让邮件服务器将邮件发送到所有其他邮件服务器,而不仅仅是兼容 ipv6 的邮件服务器。

如果有人能解释一下发生了什么,那就太好了!

更新:ip-save 打印输出为:

:INPUT DROP [41791:1739301]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [6390374:3802889072]
-A INPUT -i ens3 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -s 127.0.0.0/24 -i lo -j ACCEPT
-A INPUT -s 185.121.228.0/24 -i ens3 -j ACCEPT
COMMIT
iptables
  • 1 个回答
  • 53 Views
Martin Hope
jurijus01
Asked: 2024-12-30 20:30:36 +0800 CST

iRedMail 和 IpTables - 邮件未送达且无错误。如何解决?

  • 5

您好,祝您新年除夕快乐!

尝试防火墙 iRedMail 安装。需要仅保持对传入连接必要的端口开放。当前规则如下:

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:submission
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:submissions
ACCEPT     all  --  localhost            anywhere  
ACCEPT     all  --  185.121.228.0/24     anywhere

      

最后一条规则是保持自己的 SSH 连接处于活动状态。

目前没有邮件收发,没有错误,也没有退回的电子邮件。怀疑这可能与用于 SMTP 的 SSL 证书无法解析主机名有关,但我已为其启用了端口 53“域”,但这没有帮助。

卡在这里。一旦默认策略从 DROP 更改为 ACCEPT,它就会变得轻而易举。

非常感谢任何关于如何正确防火墙 iRedMail 服务器的想法!

编辑:为此启用了 SMTP(端口 25),但无论如何它都没有被使用。没有效果

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smtp
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:submission
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:submissions
ACCEPT     all  --  localhost            anywhere            
ACCEPT     all  --  185.121.228.0/24     anywhere    

    
iptables
  • 1 个回答
  • 55 Views
Martin Hope
jurijus01
Asked: 2024-12-23 19:18:13 +0800 CST

iptables 配置保存在哪里?

  • 5

iptables 配置保存在哪里?研究无果:

/etc/iptables - no such file or directory
/etc/sysconfig - no such file or directory
/etc/init.d/iptables - no such file or directory
/etc/network/if-up.d/ contains ethtool only
/etc/network/if-pre-up.d/ contains ethtool only

还有其他地方吗?运行 Ubuntu 24.04.1 LTS

非常感谢您的想法。

iptables
  • 1 个回答
  • 39 Views
Martin Hope
iopq
Asked: 2024-12-21 02:26:18 +0800 CST

如何通过 tproxy 发送所有 TCP 和 UDP 流量而不产生循环?

  • 3

我在使用连接的同一台 Linux 机器上运行代理客户端。在配置中,我可以告诉它使用 tproxy 到端口 2500。代理在端口 443 上运行,使用 TLS(尽管这部分由代理接管管理)

因此我需要使用 iptables 或 nftables 将所有数据包路由到代理。但我也需要标记它们,以免造成循环。

我最初的尝试没有成功,好像我的 UDP 数据包没有通过(我位于 NAT 后面,但我不知道这是不是问题,因为我无论如何都在使用代理)。我想知道它如何更好地工作,以便我可以自己调试它。

这是我的尝试:

ip rule add fwmark 1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100

#Setup a chain DIVERT to mark packets
iptables -t mangle -N DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 1
iptables -t mangle -A DIVERT -j ACCEPT

#Use DIVERT to prevent existing connections going through TPROXY twice:
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A PREROUTING -p udp -m socket -j DIVERT

#Mark all other (new) packets and use TPROXY to pass into xray
iptables -t mangle -A PREROUTING -p tcp -j TPROXY --tproxy-mark 0x1/0x1 --on-port 2500
iptables -t mangle -A PREROUTING -p udp -j TPROXY --tproxy-mark 0x1/0x1 --on-port 2500

#disable rp_filter and enable ip_forward
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv4.conf.default.rp_filter=0
sysctl -w  net.ipv4.conf.all.rp_filter=0
sysctl -w net.ipv4.conf.wlp38s0.rp_filter=0

数据包只是按照我的规则传递,就像它们不存在一样

iptables
  • 1 个回答
  • 104 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