我的家庭服务器有两个主要接口,eth1(标准Internet连接)和tun0(OpenVPN隧道)。我想iptables强制UID 1002拥有的本地进程生成的所有数据包都通过退出tun0,而所有其他数据包都通过退出eth1。 我可以轻松标记匹配的数据包: iptables -A OUTPUT -m owner --uid-owner 1002 -j MARK --set-mark 11 现在,我想在POSTROUTING链(可能是mangle表)中放置一些规则,以匹配标记为11的数据包并将其发送到tun0,然后是匹配所有数据包并将其发送到的规则eth1。 我找到了ROUTE目标,但这似乎只重写了源接口(除非我读错了它)。 iptables有能力做到这一点吗?我是否必须弄乱路由表(通过ip route或仅通过旧route命令)? 编辑:我认为也许我应该提供更多信息。我目前没有其他iptables规则(尽管我将来可能会创建一些规则来执行无关的任务)。同样,输出ip route为: default via 192.168.1.254 dev eth1 metric 203 10.32.0.49 dev tun0 proto kernel scope link src 10.32.0.50 85.17.27.71 via 192.168.1.254 dev eth1 192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.73 …
我在Docker容器中运行MySQL时遇到问题。我的测试映像是从以下Dockerfile构建的: # See: https://index.docker.io/u/brice/mysql/ FROM ubuntu:12.10 MAINTAINER Joni Kahara <joni.kahara@async.fi> # Because docker replaces /sbin/init: https://github.com/dotcloud/docker/issues/1024 RUN dpkg-divert --local --rename --add /sbin/initctl RUN ln -s /bin/true /sbin/initctl RUN apt-get update RUN apt-get upgrade -y RUN apt-get -y install mysql-server RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf RUN /usr/bin/mysqld_safe & \ …
如何封锁除1962、999、12020以外的所有端口? 一个用于SSH的端口,另一个用于一个脚本的端口。因此,有必要允许这些端口上的传出,对吗? 我的iptables: # Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012 *mangle :PREROUTING ACCEPT [643521:136954367] :INPUT ACCEPT [643521:136954367] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [645723:99904505] :POSTROUTING ACCEPT [645723:99904505] COMMIT # Completed on Sat Feb 25 17:25:21 2012 # Generated by iptables-save v1.4.4 on Sat Feb 25 17:25:21 2012 …