好的,下面是一个示例代码:

``` import java.io.*;

public class Iptables { // 防火墙规则类型:接受、拒绝、丢弃 public enum RuleType { ACCEPT, REJECT, DROP }

// 防火墙规则链类型:输入、输出、转发
public enum ChainType {
    INPUT, OUTPUT, FORWARD
}

// 防火墙规则参数
public static class Rule {
    public RuleType type;
    public ChainType chain;
    public String protocol;
    public String sourceIp;
    public String sourcePort;
    public String destinationIp;
    public String destinationPort;
}

// 执行Linux命令
private static void executeCommand(String command) throws Exception {
    Process process = Runtime.getRuntime().exec(new String[] {"/bin/sh", "-c", command});
    BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
    reader.close();
    process.waitFor();
    if (process.exitValue() != 0) {
        throw new Exception("命令执行失败:" + command);
    }
}

// 添加防火墙规则
public static void addRule(Rule rule) throws Exception {
    StringBuilder sb = new StringBuilder();
    sb.append("iptables -A ");
    sb.append(rule.chain.name().toLowerCase());
    sb.append(" -p ");
    sb.append(rule.protocol);
    if (rule.sourceIp != null) {
        sb.append(" -s ");
        sb.append(rule.sourceIp);
    }
    if (rule.sourcePort != null) {
        sb.append(" --sport ");
        sb.append(rule.sourcePort);
    }
    if (rule.destinationIp != null) {
        sb.append(" -d ");
        sb.append(rule.destinationIp);
    }
    if (rule.destinationPort != null) {
        sb.append(" --dport ");
        sb.append(rule.destinationPort);
    }
    sb.append(" -j ");
    sb.append(rule.type.name().toLowerCase());
    executeCommand(sb.toString());
}

// 删除防火墙规则
public static void deleteRule(Rule rule) throws Exception {
    StringBuilder sb
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐